Теорема, которую вы пытаетесь доказать, кажется немного странной. В частности, ∃ λ z → z < 25
не имеет никаких предположений!
Давайте сделаем импорт в первую очередь.
open import Data.Nat.Base
open import Data.Product
Одно простое доказательство обобщения вашей теоремы (без предположений) работает следующим образом:
lem : ∃ λ z → z < 25
lem = zero , s≤s z≤n
В стандартной библиотеке, m < n
определяется как suc m ≤ n
. Таким образом, лемма эквивалентна ∃ λ z → suc z ≤ suc 24
. Для z = zero
это удерживается s≤s z≤n
.
Вот несколько различных способов выражения своей исходной теоремы (фактическое доказательство всегда одинакова):
thm : (∃ λ m → m < 10) × (∃ λ n → n < 15) → ∃ λ z → z < 25
thm _ = lem
thm′ : (∃₂ λ m n → m < 10 × n < 15) → ∃ λ z → z < 25
thm′ _ = lem
thm″ : (∃ λ m → m < 10) → (∃ λ n → n < 15) → ∃ λ z → z < 25
thm″ _ _ = lem
Я бы предпочел последний вариант в большинстве случаев.
Обратите внимание, что глагол, который вы ищете, «доказывает». Слово «доказательство» обычно используется как существительное для описания того, что вы создаете, когда вы что-то доказываете. Это обычная ошибка. – dfeuer
моя ошибка .. я запомню. Благодарю . – ajayv