Я пытаюсь использовать Изабель для автоматического доказательства. Однако у меня возникла проблема с указанием формул в Isabelle. Например, у меня есть такие формулы, как Затем я определяю наборы и использую символы big_wedge и big_vee в Изабель как следует:
И результатом будет Внутренняя лексическая ошибка⌂ Не удалось проанализировать опору. Не могли бы вы объяснить, что здесь не так? Большое Вам спасибо.
Как написать большой и большой клин на Изабель
comment
Изабель уже использует большой клин как универсальную мета-количественную оценку, я подозреваю, что вы столкнулись с этим.
- person Josh Chen   schedule 07.10.2020
comment
Спасибо, но использование Exist для big_vee и Universal для big_wedge кажется неразумным. Big_vee можно использовать как Universal. Например, \ forall x \ в N. \ bigvee Q_x.
- person Trình Lê Khánh   schedule 07.10.2020
comment
Вы определили \ bigvee и \ bigwedge (определения нет на вашем скриншоте)? Эти обозначения не существуют по умолчанию.
- person Mathias Fleury   schedule 07.10.2020
comment
Хм, насколько я знаю, эти символы предоставлены Изабель на вкладке «Символы / логика». Придется ли нам дать им новое определение?
- person Trình Lê Khánh   schedule 07.10.2020
Ответы (1)
Не все символы, показанные на вкладках «Символы» Isabelle / jEdit, имеют значение. Это символы, которые вы можете использовать в своем коде.
Исходя из соответствующего кода для сумм, я начал настройку, но не закончил (в частности, не поддерживается синтаксис ⋀t!=l. P t
).
context comm_monoid_add
begin
sublocale bigvee: comm_monoid_set HOL.disj False
defines bigvee = bigvee.F and bigvee' = bigvee.G
by standard auto
abbreviation bigvee'' :: ‹bool set ⇒ bool› ("⋁")
where "⋁ ≡ bigvee (λx. x)"
sublocale bigwedge: comm_monoid_set HOL.conj True
defines bigwedge = bigwedge.F and bigwedge' = bigwedge.G
by standard auto
abbreviation bigwedge'' :: ‹bool set ⇒ bool› ("⋀")
where "⋀ ≡ bigwedge (λx. x)"
end
syntax
"_bigwedge" :: "pttrn ⇒ 'a set ⇒ 'b ⇒ 'b::comm_monoid_add" ("(2⋀(_/∈_)./ _)" [0, 51, 10] 10)
translations ― ‹Beware of argument permutation!›
"⋀i∈A. b" ⇌ "CONST bigwedge (λi. b) A"
syntax
"_bigvee" :: "pttrn ⇒ 'a set ⇒ 'b ⇒ 'b::comm_monoid_add" ("(2⋁(_/∈_)./ _)" [0, 51, 10] 10)
translations ― ‹Beware of argument permutation!›
"⋁i∈A. b" ⇌ "CONST bigvee (λi. b) A"
instantiation bool :: comm_monoid_add
begin
definition zero_bool where
[simp]: ‹zero_bool = False›
definition plus_bool where
[simp]: ‹plus_bool = (∨)›
instance
by standard auto
end
thm bigvee_def
lemma ‹finite A ⟹ (⋁i∈A. f i) ⟷ (∃i ∈ A. f i)›
apply (induction rule: finite_induct)
apply (auto simp: )
done
lemma ‹finite A ⟹ (⋀i∈A. f i) ⟷ A = {} ∨ (∀i ∈ A. f i)›
apply (induction rule: finite_induct)
apply (auto simp: )[2]
done
lemma ‹infinite A ⟹ (⋀i∈A. f i) ⟷ True›
by auto
lemma test1:
‹(⋀j∈L. ⋀u∈U. ⋀t∈T. ⋀l∈L. ⋀l⇩1∈L⇩1. ¬P j u t l⇩1) ∨
(⋁i∈I. ⋁v∈V. ⋀k∈K. ⋁h∈H. Q i ∨ k h) ⟹
(⋁i∈I. ⋁v∈V. ⋀k∈K. ⋁h∈H. Q i ∨ k h) ∨ (⋀j∈J. ⋀u∈U. ⋀t∈T. ⋀l⇩1∈L⇩1. ¬P j u t l⇩1)›
apply auto
Возможна полная настройка. Но я не уверен, что это хорошая идея ... Вам понадобится много лемм, чтобы все работало хорошо, и я не уверен, что поведение для бесконечных множеств правильное.
person
Mathias Fleury
schedule
07.10.2020
Спасибо. Похоже, что дают модель Deep Learning для младшего школьника =))). Я пытаюсь понять, что это. На самом деле, я был с Изабель всего около 3 дней
- person Trình Lê Khánh; 08.10.2020
Обозначения и переводы похожи на наихудший способ начать работу с Изабель ... Пока не обращайте на это внимания и используйте встроенные ∀ и ∃.
- person Mathias Fleury; 08.10.2020
Спасибо. Я видел, что вы использовали l1 \ в L1, в чем разница между L и L1? Это L1 = L \ {l}?
- person Trình Lê Khánh; 08.10.2020
В вашей формуле было
l1 != l
. Поскольку я не определил обозначение, я заменил его на l1 \in L1
.
- person Mathias Fleury; 08.10.2020
Я написал это для l1 \ in L и l1! = L. Как мы можем это указать?
- person Trình Lê Khánh; 10.10.2020
Вы могли написать
l1 \in L - {l}
.
- person Mathias Fleury; 10.10.2020
Ой, спасибо: D. Могу я получить ваш контакт (электронную почту)? Я надеюсь, что смогу спросить вас по электронной почте.
- person Trình Lê Khánh; 10.10.2020
Попробуйте вместо этого (неофициальный) zulip Изабель isabelle.zulipchat.com (я тоже там, и другие люди могут дать свои предложения ).
- person Mathias Fleury; 10.10.2020