]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/coq-contribs/LAMBDA-TYPES/pc1_defs.v
ocaml 3.09 transition
[helm.git] / helm / coq-contribs / LAMBDA-TYPES / pc1_defs.v
index 0dcc0b8c7d3cc0568be4f95ce1c9602b88340599..22b4fcefb0c3666139ba6606bf1c5839fe6adb29 100644 (file)
@@ -1,79 +1,50 @@
 (*#* #stop file *)
 
 Require Export pr0_defs.
+Require Export pr1_defs.
 
-      Inductive pc0 [t1,t2:T] : Prop :=
-         | pc0_r : (pr0 t1 t2) -> (pc0 t1 t2)
-         | pc0_x : (pr0 t2 t1) -> (pc0 t1 t2).
+      Definition pc1 := [t1,t2:?] (EX t | (pr1 t1 t) & (pr1 t2 t)). 
 
-      Hint pc0 : ltlc := Constructors pc0.
+      Hints Unfold pc1 : ltlc.
 
-      Inductive pc1 : T -> T -> Prop :=
-         | pc1_r : (t:?) (pc1 t t)
-         | pc1_u : (t2,t1:?) (pc0 t1 t2) -> (t3:?) (pc1 t2 t3) -> (pc1 t1 t3).
-
-      Hint pc1 : ltlc := Constructors pc1.
-
-   Section pc0_props. (******************************************************)
-
-      Theorem pc0_s : (t2,t1:?) (pc0 t1 t2) -> (pc0 t2 t1).
-      Intros.
-      Inversion H; XAuto.
-      Qed.
-
-   End pc0_props.
-
-      Hints Resolve pc0_s : ltlc.
+      Tactic Definition Pc1Unfold :=
+         Match Context With
+            [ H: (pc1 ?2 ?3) |- ? ] -> Unfold pc1 in H; XDecompose H.
 
    Section pc1_props. (******************************************************)
 
-      Theorem pc1_pr0_r : (t1,t2:?) (pr0 t1 t2) -> (pc1 t1 t2).
+      Theorem pc1_pr0_r: (t1,t2:?) (pr0 t1 t2) -> (pc1 t1 t2).
       XEAuto.
       Qed.
 
-      Theorem pc1_pr0_x : (t1,t2:?) (pr0 t2 t1) -> (pc1 t1 t2).
+      Theorem pc1_pr0_x: (t1,t2:?) (pr0 t2 t1) -> (pc1 t1 t2).
       XEAuto.
       Qed.
 
-      Theorem pc1_pc0 : (t1,t2:?) (pc0 t1 t2) -> (pc1 t1 t2).
-      XEAuto.
+      Theorem pc1_pr0_u: (t2,t1:?) (pr0 t1 t2) ->
+                         (t3:?) (pc1 t2 t3) -> (pc1 t1 t3).
+      Intros; Pc1Unfold; XEAuto.
       Qed.
-
-      Theorem pc1_t : (t2,t1:?) (pc1 t1 t2) ->
-                      (t3:?) (pc1 t2 t3) -> (pc1 t1 t3).
-      Intros t2 t1 H; XElim H; XEAuto.
+      
+      Theorem pc1_refl: (t:?) (pc1 t t).
+      XEAuto.
       Qed.
 
-      Hints Resolve pc1_t : ltlc.
-
-      Theorem pc1_s : (t2,t1:?) (pc1 t1 t2) -> (pc1 t2 t1).
-      Intros; XElim H; XEAuto.
+      Theorem pc1_s: (t2,t1:?) (pc1 t1 t2) -> (pc1 t2 t1).
+      Intros; Pc1Unfold; XEAuto.
       Qed.
 
       Theorem pc1_tail_1: (u1,u2:?) (pc1 u1 u2) ->
                           (t:?; k:?) (pc1 (TTail k u1 t) (TTail k u2 t)).
-      Intros; XElim H; Intros.
-(* case 1: pc1_r *)
-      XAuto.
-(* case 2: pc1_u *)
-      XElim H; Intros; XEAuto.
+      Intros; Pc1Unfold; XEAuto.
       Qed.
 
       Theorem pc1_tail_2: (t1,t2:?) (pc1 t1 t2) ->
                           (u:?; k:?) (pc1 (TTail k u t1) (TTail k u t2)).
-      Intros; XElim H; Intros.
-(* case 1: pc1_r *)
-      XAuto.
-(* case 2: pc1_u *)
-      XElim H; Intros; XEAuto.
-      Qed.
-
-      Theorem pc1_tail: (u1,u2:?) (pc1 u1 u2) -> (t1,t2:?) (pc1 t1 t2) ->
-                        (k:?) (pc1 (TTail k u1 t1) (TTail k u2 t2)).
-      Intros; EApply pc1_t; [ EApply pc1_tail_1 | EApply pc1_tail_2 ]; XAuto.
+      Intros; Pc1Unfold; XEAuto.
       Qed.
 
    End pc1_props.
 
-      Hints Resolve pc1_pr0_r pc1_pr0_x pc1_pc0 pc1_t pc1_s
-                    pc1_tail_1 pc1_tail_2 pc1_tail : ltlc.
+      Hints Resolve pc1_refl pc1_pr0_u pc1_pr0_r pc1_pr0_x pc1_s
+                    pc1_tail_1 pc1_tail_2 : ltlc.