Я хотел преобразовать это доказательство в Isar как упражнение ab (для себя, чтобы изучить Isar), используя только базовые правила естественного вывода (ND) из логики высказываний (например, notI
, notE
, impI
, _4 _... и т. Д.).
Я могу легко сделать это в сценарии применения:
lemma very_simple0: "A ⟶ A ∨ B"
apply (rule impI) (* A ⟹ A ∨ B *)
thm disjI1 (* ?P ⟹ ?P ∨ ?Q *)
apply (rule disjI1) (* A ⟹ A *)
by assumption
но мои попытки доказательства Isar терпят неудачу:
lemma very_simple1: "A ⟶ A ∨ B"
proof (* TODO why/how does this introduce A by itself*)
assume A (* probably not neccessary since Isabelle did impI by itself *)
have "A ⟹ A" by disjI1
show "A ⟹ A" by assumption
qed
моя основная ошибка:
Undefined method: "disjI1"⌂
что мне кажется загадочным, потому что раньше в скрипте apply правила работали нормально.
Что я делаю неправильно?
Обратите внимание, что это также приводит к ошибке:
lemma very_simple2: "A ⟶ A ∨ B"
proof impI
assume A (* probably not neccessary since Isabelle did impI by itself *)
have "A ⟹ A" by disjI1
show "A ⟹ A" by assumption
qed
та же ошибка, что и выше:
Undefined method: "impI"⌂
Зачем?
Редактировать:
Я узнал, что «метод» по-прежнему требует работы rule impI
или metis etc
, но сценарий по-прежнему не работает:
lemma very_simple1: "A ⟶ A ∨ B"
proof (rule impI)
assume A (* probably not neccessary since Isabelle did impI by itself *)
have "A ⟹ A" by (rule disjI1)
show "A ⟹ A" by assumption
qed
Edit2:
lemma very_simple1: "A ⟶ A ∨ B"
proof (rule impI)
have 0: "A ⟹ A ∨ B" by (rule disjI1)
have 1: "A ⟹ A" by assumption
from 1 show "True" by assumption
qed
Я все еще не могу завершить доказательство.
rule impI
, impI не хватит. Заметим, что доказательство эквивалентно стандартному доказательству и автоматически применяет одну теорему. - person Mathias Fleury   schedule 12.05.2020have "A ⟹ A" by assumption
работает. - person Mathias Fleury   schedule 12.05.2020