Commit a962fa58 authored by Samuel Ben Hamou's avatar Samuel Ben Hamou
Browse files

Reprise de la preuve de SuccRight.

parent 8939d447
......@@ -226,7 +226,7 @@ Lemma ZeroRight : IsTheorem Intuiti PeanoTheory (∀ (#0 = #0 + Zero)).
Proof.
thm.
rec.
+ eapp_R_All_i. cbm.
+ app_R_All_i "y". cbm.
sym.
axiom ax9 AX9.
apply R_All_e with (t := Zero) in AX9; auto.
......@@ -247,66 +247,36 @@ Lemma SuccRight : IsTheorem Intuiti PeanoTheory (∀∀ (Succ(#1 + #0) = #1 + Su
Proof.
thm.
rec.
unfold IsTheorem.
split.
+ unfold Wf. split; [ auto | split; auto ].
+ exists (induction_schema ( Succ (#1 + #0) = (#1 + Succ (#0)) ) :: axioms_list).
split.
- apply Forall_forall. intros. destruct H.
* simpl. unfold IsAx. right. exists ( Succ (#1 + #0) = #1 + Succ (#0)). split; [ auto | split; [ auto | auto ]].
* simpl. unfold IsAx. left. assumption.
- apply R_Imp_e with ( A:= nForall (Nat.pred (level ( Succ (# 1 + # 0) = # 1 + Succ (# 0))))
(( bsubst 0 Zero ( Succ (# 1 + # 0) = # 1 + Succ (# 0))) /\
( ( Succ (# 1 + # 0) = # 1 + Succ (# 0)) ->
bsubst 0 (Succ (# 0)) ( Succ (# 1 + # 0) = # 1 + Succ (# 0))))).
* apply R_Ax. unfold induction_schema. apply in_eq.
* simpl. apply R_And_i.
++ cbn. change (Fun "O" []) with Zero.
apply R_All_i with (x := "x"); [ | cbn; change (Fun "O" []) with Zero ].
-- rewrite<- Names.mem_spec. now compute.
-- apply R_All_i with (x := "y"); [ compute; inversion 1 | ]. cbn. change (Fun "O" []) with Zero. set (AxRec := (_ -> _)%form). assert (Pr Intuiti (AxRec :: axioms_list Zero + FVar "y" = FVar "y")). set (Γ := AxRec :: axioms_list).
{ assert (AX9 : Pr Intuiti (Γ ax9)). { apply R_Ax. compute; intuition. }
unfold ax9 in AX9.
apply R_All_e with (t := FVar "y") in AX9; [ | auto ].
compute in AX9. assumption. }
assert (Pr Intuiti (AxRec :: axioms_list Succ (Zero + FVar "y") = Succ (FVar "y"))).
{ hered. assumption. }
assert (Pr Intuiti (AxRec :: axioms_list ax9)).
{ apply R_Ax. compute; intuition. }
unfold ax9 in H1.
apply R_All_e with (t := Succ (FVar "y")) in H1; [ | auto ].
cbn in H1. apply Symmetry in H1; [ | auto | auto | compute; intuition ].
apply Transitivity with (B := Succ (FVar "y")); [ auto | auto | auto | compute; intuition | assumption | assumption ].
++ apply R_All_i with (x := "x"); [ rewrite<- Names.mem_spec; now compute | ].
cbn.
apply R_Imp_i.
apply R_All_i with (x := "y"); [ rewrite<- Names.mem_spec; now compute | ].
cbn.
set (h2 := (_ -> _)%form). set (h1 := ( _ = _)%form). set (Γ := h1::h2::axioms_list).
assert (Pr Intuiti (Γ h1)).
{ apply R_Ax. compute ; intuition. }
unfold h1 in H.
apply R_All_e with (t := FVar "y") in H; [ | auto ].
cbn in H.
apply Hereditarity in H; [ | auto | auto | compute; intuition ].
assert (Pr Intuiti (Γ ax10)).
{ apply R_Ax. compute; intuition. }
unfold ax10 in H0.
apply R_All_e with (t := FVar "x") in H0; [ | auto ].
apply R_All_e with (t := Succ (FVar "y")) in H0; [ | auto ].
cbn in H0.
apply Symmetry in H0; [ | auto | auto | compute; intuition ].
assert (Eq1 : Pr Intuiti (Γ Succ (Succ (FVar "x" + FVar "y")) = Succ (FVar "x") + Succ (FVar "y"))).
{ apply Transitivity with (B := Succ (FVar "x" + Succ (FVar "y"))); [ auto | auto | auto | compute; intuition | assumption | assumption ]. }
assert (Pr Intuiti (Γ ax10)).
{ apply R_Ax. compute; intuition. }
unfold ax10 in H1.
apply R_All_e with (t := FVar "x") in H1; [ | auto ].
apply R_All_e with (t := FVar "y") in H1; [ | auto ].
cbn in H1.
apply Hereditarity in H1; [ | auto | auto | compute; intuition ].
trans (Succ (Succ ( FVar "x" + FVar "y" ))).
+ app_R_All_i "x".
app_R_All_i "y".
cbm.
sym.
trans (Succ (FVar "y")).
- axiom ax9 AX9.
apply R_All_e with (t := Succ (FVar "y")) in AX9; auto.
- ahered.
sym.
axiom ax9 AX9.
apply R_All_e with (t := FVar "y") in AX9; auto.
+ app_R_All_i "x".
cbm.
apply R_Imp_i.
app_R_All_i "y".
cbm.
set (hyp := Succ _ = _).
trans (Succ (Succ (FVar "x" + FVar "y"))).
- ahered.
axiom ax10 AX10.
apply R_All_e with (t := FVar "x") in AX10; auto.
apply R_All_e with (t := FVar "y") in AX10; auto.
- trans (Succ (FVar "x" + Succ (FVar "y"))).
* ahered.
axiom hyp Hyp.
apply R_All_e with (t := FVar "y") in Hyp; auto.
* axiom ax10 AX10.
sym.
apply R_All_e with (t := FVar "x") in AX10; auto.
apply R_All_e with (t := Succ (FVar "y")) in AX10; auto.
Qed.
Lemma Comm : IsTheorem Intuiti PeanoTheory (∀∀ (#0 + #1 = #1 + #0)).
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment