196 Глава 6. Подпрогра ммы, функциональное программирование
Она имеет вид
({θ
0
}Π
f
{ψ
0
}, ˆτ ∪ σ
δ
) .
Очевидно, что Π
f
(ˆτ ∪ σ
δ
) определено и лес Ff (ˆτ ∪ σ
δ
, Π
f
) имеет мень-
шую высоту. По индукционному предположению ДТС ниже W конечно.
А так как само УДТС конечно, то и ДТС должно быть конечным.
∗
Задача 6.30. Докажите, что если Π (σ) определено, то УДТС конеч-
но.
Лемма 6.14. (О корректности ВП) С помощью правила ВП из до-
казательств частично (полностью) корректных троек можно полу-
чить только частично (полностью) корректные.
Доказательство. Пусть σ |= ϕ и тройка {ϕ}Π {ψ} доказуема. По-
строим ДТС. Если речь идет о частичной корректности, то дерево ко-
нечно из-за леммы 6.13 на стр. 195.
Докажем, что для полной корректности дерево не может быть беско-
нечным. Предположим, что это не так. Тогда в дереве есть бесконечная
ветвь или какая-то вершина имеет бесконечно много сыновей.
Допустим, что в дереве нет ни одной бесконечной ветви. Значит долж-
ны быть вершины с бесконечным количеством сыновей. Рассмотрим
какую-либо вершину (s, τ ), имеющую бесконечно много сыновей, каж-
дый потомок которой —
s
i
, τ
i
— имеет конечно много сыновей. Такие
вершины должны существовать из-за отсутствия бесконечных ветвей.
Бесконечно много сыновей может иметь только вершины с циклом. Сле-
довательно,
s ∼ {ϕ} while T do Π
1
end; {ψ}
Так как мы доказываем полную корректность, то используется прави-
ло ЦП. По лемме 6.10 на стр. 192, τ |= ϕ. Следовательно, существует
ограничитель L цикла. Тогда τ
i+1
(L) < τ
i
(L). Следовательно, τ
i
(L)
образуют убывающую последовательность натуральных чисел. По лем-
ме об убывающих цепях мы получаем, что последовательность не может
быть бесконечной. Противоречие. Следовательно, в дереве должны быть
бесконечные ветви.
Итак, в дереве есть хотя бы одна бесконечная ветвь. Возьмем самую
левую из них. Тогда для каждой вершины на этой ветви левее ее лежит
конечно много вершин. Так как само доказательство конечно, то неко-
торое использование правила ВП для подпрограммы g на этой ветви