Я совершенно новичок в программировании coq и не могу доказать теорему ниже. Мне нужна помощь по шагам, как решить ниже построить?
Теорема PeirceContra: forall (p q: Prop), ~ p-> ~ ((p -> q) -> p).
Я попробовал доказательства ниже.
Приведенная аксиома как Axiom classic : forall P:Prop, P \/ ~ P.
Theorem PeirceContra: forall (p q:Prop), ~ p -> ~((p -> q) -> p).
Proof.
unfold not.
intros.
apply H.
destruct (classic p) as [ p_true | p_not_true].
- apply p_true.
- elimtype False. apply H.
Qed.
Получение подцелей после использования elimtype и применение H как
1 subgoal
p, q : Prop
H : p -> False
H0 : (p -> q) -> p
p_not_true : ~ p
______________________________________(1/1)
p
Но теперь я застрял здесь, потому что не могу доказать P, используя конструкцию p_not_true данной аксиомы ...... Пожалуйста, предложите некоторую помощь ......
Мне не ясно, как использовать данную аксиому для доказательства логики ................