Мне весело, представившись Coq. Прямо сейчас я застрял делать доказательств о перечислении:В coq, как вы объявляете/подтверждаете элементы перечисления, различны?
Inductive Comparison : Type :=
| EQUAL
| GREATER
| LESSER.
ли это неявно верно, что EQUAL и GREATER и LESSER отличаются (это, кажется, что эти документы означают), или в том, что не определено только с выше код? Я не могу понять, как это доказать.
Proposition comp_sanity: forall x : Comparison,
x = EQUAL /\ x = GREATER -> False.
Proof.
intros x H_eqgr.
дает мне:
H_eqgr : x = EQUAL /\ x = GREATER
--------------------------------------------------
False
но я застрял:
Coq> contradiction H_eqgr.
Error: Not a contradiction.
Что я должен делать здесь, чтобы иметь полностью (отчетливо) перечисленное типа?
Хорошо, Подст и конгруэнтность не помогли мне, но я действительно получил дискриминировать работать. Есть ли лучший способ написать это? Доказательство. intros x H_eqgr. утверждают (x = EQUAL) как H_eq. применить H_eqgr. утверждают (x = БОЛЬШЕ) как H_gr. применить H_eqgr. переписать H_eq в H_gr. различают H_gr. –
@ Энциклопедия интро. инверсия H. subst. противоречат H1. дискриминировать. – Veky
@ AnthonyTowns Немного короче доказательства: 'intros? [contra ->]. дискриминировать ". Используя немного магии' intros'. –