]> matita.cs.unibo.it Git - helm.git/blob - helm/coq-contribs/LAMBDA-TYPES/pr2_lift.v
ocaml 3.09 transition
[helm.git] / helm / coq-contribs / LAMBDA-TYPES / pr2_lift.v
1 (*#* #stop file *)
2
3 Require subst0_lift.
4 Require drop_props.
5 Require pr0_lift.
6 Require pr2_defs.
7
8 (*#* #caption "main properties of predicate \\texttt{pr2}" *)
9 (*#* #clauses pr2_props *)
10
11    Section pr2_lift. (*******************************************************)
12
13 (*#* #caption "conguence with lift" *)
14 (*#* #cap #cap c, t1, t2 #alpha e in D, d in i *)
15
16       Theorem pr2_lift : (c,e:?; h,d:?) (drop h d c e) ->
17                          (t1,t2:?) (pr2 e t1 t2) ->
18                          (pr2 c (lift h d t1) (lift h d t2)).
19       Intros until 2; XElim H0; Intros.
20 (* case 1 : pr2_free *)
21       XAuto.
22 (* case 2 : pr2_delta *)
23       Apply (lt_le_e i d); Intros; DropDis.
24 (* case 2.1 : i < d *)
25       Rewrite minus_x_Sy in H0; [ Idtac | XAuto ].
26       DropGenBase; Rewrite H0 in H; Simpl in H; XEAuto.
27 (* case 2.2 : i >= d *)
28       XEAuto.
29       Qed.
30
31    End pr2_lift.
32
33       Hints Resolve pr2_lift : ltlc.