Возможно, кто-то может помочь мне с доказательством окончания в Изабель. Я пытаюсь построить из списка A новый под-список B. Для построения B я читаю снова и снова о целом A. Вынимайте элементы и используйте результат для поиска следующего элемента. Я привел простой пример, чтобы проиллюстрировать это:прекращение изабеллы с расстоянием действительных чисел
приведен список случайных действительных чисел. И мы говорим, что ряд P находится в списке, если элемент из списка выше, чем P.
definition pointOnList :: "real list ⇒ real ⇒ bool" where
"pointOnList L P ≡ ∃ i. i < length L ∧ P < L!i"
создать функцию, которая всегда взять следующий больший элемент.
fun nextPoint :: "real list ⇒ real ⇒ real" where
"nextPoint (X#Ls) P = (if (X > P)
then (X)
else (nextPoint Ls P))"
И теперь я пытаюсь создать новый отсортированный неполный список по вынимают следующий больший элемент, чем P, но меньше, чем Q с nextPoint
и продолжением с этим.
function listBetween :: "real list ⇒ real ⇒ real ⇒ real list" where
"pointOnList L P ⟹ pointOnList L Q ⟹ listBetween L P Q = (if(P ≤ Q)
then(P # (listBetween L (nextPoint L P) Q))
else([]))"
я уже продемонстрировал nextPoint
всегда возвращает все большее число:
lemma foo: "pointOnList P A ⟹ A < (nextPoint P A)"
прекращение доказательства с relation "measure (size o fst o snd)“
не работает для действительных чисел ... и теперь я не знаю, как продолжить.
Это обозначение для понимания списка. Значит, список, состоящий из элементов L, в том же порядке, которые больше P. – Mathieu
, не удивляйтесь, я спросил, что означает '[A ← L. P