]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_1/lift1/props.ma
refactoring of \lambda\delta version 1 in matita
[helm.git] / matita / matita / contribs / lambdadelta / basic_1 / lift1 / props.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 include "Basic-1/lift/props.ma".
18
19 include "Basic-1/drop1/defs.ma".
20
21 theorem lift1_lift1:
22  \forall (is1: PList).(\forall (is2: PList).(\forall (t: T).(eq T (lift1 is1 
23 (lift1 is2 t)) (lift1 (papp is1 is2) t))))
24 \def
25  \lambda (is1: PList).(PList_ind (\lambda (p: PList).(\forall (is2: 
26 PList).(\forall (t: T).(eq T (lift1 p (lift1 is2 t)) (lift1 (papp p is2) 
27 t))))) (\lambda (is2: PList).(\lambda (t: T).(refl_equal T (lift1 is2 t)))) 
28 (\lambda (n: nat).(\lambda (n0: nat).(\lambda (p: PList).(\lambda (H: 
29 ((\forall (is2: PList).(\forall (t: T).(eq T (lift1 p (lift1 is2 t)) (lift1 
30 (papp p is2) t)))))).(\lambda (is2: PList).(\lambda (t: T).(f_equal3 nat nat 
31 T T lift n n n0 n0 (lift1 p (lift1 is2 t)) (lift1 (papp p is2) t) (refl_equal 
32 nat n) (refl_equal nat n0) (H is2 t)))))))) is1).
33 (* COMMENTS
34 Initial nodes: 145
35 END *)
36
37 theorem lift1_xhg:
38  \forall (hds: PList).(\forall (t: T).(eq T (lift1 (Ss hds) (lift (S O) O t)) 
39 (lift (S O) O (lift1 hds t))))
40 \def
41  \lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall (t: T).(eq T 
42 (lift1 (Ss p) (lift (S O) O t)) (lift (S O) O (lift1 p t))))) (\lambda (t: 
43 T).(refl_equal T (lift (S O) O t))) (\lambda (h: nat).(\lambda (d: 
44 nat).(\lambda (p: PList).(\lambda (H: ((\forall (t: T).(eq T (lift1 (Ss p) 
45 (lift (S O) O t)) (lift (S O) O (lift1 p t)))))).(\lambda (t: T).(eq_ind_r T 
46 (lift (S O) O (lift1 p t)) (\lambda (t0: T).(eq T (lift h (S d) t0) (lift (S 
47 O) O (lift h d (lift1 p t))))) (eq_ind nat (plus (S O) d) (\lambda (n: 
48 nat).(eq T (lift h n (lift (S O) O (lift1 p t))) (lift (S O) O (lift h d 
49 (lift1 p t))))) (eq_ind_r T (lift (S O) O (lift h d (lift1 p t))) (\lambda 
50 (t0: T).(eq T t0 (lift (S O) O (lift h d (lift1 p t))))) (refl_equal T (lift 
51 (S O) O (lift h d (lift1 p t)))) (lift h (plus (S O) d) (lift (S O) O (lift1 
52 p t))) (lift_d (lift1 p t) h (S O) d O (le_O_n d))) (S d) (refl_equal nat (S 
53 d))) (lift1 (Ss p) (lift (S O) O t)) (H t))))))) hds).
54 (* COMMENTS
55 Initial nodes: 371
56 END *)
57
58 theorem lifts1_xhg:
59  \forall (hds: PList).(\forall (ts: TList).(eq TList (lifts1 (Ss hds) (lifts 
60 (S O) O ts)) (lifts (S O) O (lifts1 hds ts))))
61 \def
62  \lambda (hds: PList).(\lambda (ts: TList).(TList_ind (\lambda (t: TList).(eq 
63 TList (lifts1 (Ss hds) (lifts (S O) O t)) (lifts (S O) O (lifts1 hds t)))) 
64 (refl_equal TList TNil) (\lambda (t: T).(\lambda (t0: TList).(\lambda (H: (eq 
65 TList (lifts1 (Ss hds) (lifts (S O) O t0)) (lifts (S O) O (lifts1 hds 
66 t0)))).(eq_ind_r T (lift (S O) O (lift1 hds t)) (\lambda (t1: T).(eq TList 
67 (TCons t1 (lifts1 (Ss hds) (lifts (S O) O t0))) (TCons (lift (S O) O (lift1 
68 hds t)) (lifts (S O) O (lifts1 hds t0))))) (eq_ind_r TList (lifts (S O) O 
69 (lifts1 hds t0)) (\lambda (t1: TList).(eq TList (TCons (lift (S O) O (lift1 
70 hds t)) t1) (TCons (lift (S O) O (lift1 hds t)) (lifts (S O) O (lifts1 hds 
71 t0))))) (refl_equal TList (TCons (lift (S O) O (lift1 hds t)) (lifts (S O) O 
72 (lifts1 hds t0)))) (lifts1 (Ss hds) (lifts (S O) O t0)) H) (lift1 (Ss hds) 
73 (lift (S O) O t)) (lift1_xhg hds t))))) ts)).
74 (* COMMENTS
75 Initial nodes: 307
76 END *)
77
78 theorem lift1_free:
79  \forall (hds: PList).(\forall (i: nat).(\forall (t: T).(eq T (lift1 hds 
80 (lift (S i) O t)) (lift (S (trans hds i)) O (lift1 (ptrans hds i) t)))))
81 \def
82  \lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall (i: 
83 nat).(\forall (t: T).(eq T (lift1 p (lift (S i) O t)) (lift (S (trans p i)) O 
84 (lift1 (ptrans p i) t)))))) (\lambda (i: nat).(\lambda (t: T).(refl_equal T 
85 (lift (S i) O t)))) (\lambda (h: nat).(\lambda (d: nat).(\lambda (hds0: 
86 PList).(\lambda (H: ((\forall (i: nat).(\forall (t: T).(eq T (lift1 hds0 
87 (lift (S i) O t)) (lift (S (trans hds0 i)) O (lift1 (ptrans hds0 i) 
88 t))))))).(\lambda (i: nat).(\lambda (t: T).(eq_ind_r T (lift (S (trans hds0 
89 i)) O (lift1 (ptrans hds0 i) t)) (\lambda (t0: T).(eq T (lift h d t0) (lift 
90 (S (match (blt (trans hds0 i) d) with [true \Rightarrow (trans hds0 i) | 
91 false \Rightarrow (plus (trans hds0 i) h)])) O (lift1 (match (blt (trans hds0 
92 i) d) with [true \Rightarrow (PCons h (minus d (S (trans hds0 i))) (ptrans 
93 hds0 i)) | false \Rightarrow (ptrans hds0 i)]) t)))) (xinduction bool (blt 
94 (trans hds0 i) d) (\lambda (b: bool).(eq T (lift h d (lift (S (trans hds0 i)) 
95 O (lift1 (ptrans hds0 i) t))) (lift (S (match b with [true \Rightarrow (trans 
96 hds0 i) | false \Rightarrow (plus (trans hds0 i) h)])) O (lift1 (match b with 
97 [true \Rightarrow (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) | 
98 false \Rightarrow (ptrans hds0 i)]) t)))) (\lambda (x_x: bool).(bool_ind 
99 (\lambda (b: bool).((eq bool (blt (trans hds0 i) d) b) \to (eq T (lift h d 
100 (lift (S (trans hds0 i)) O (lift1 (ptrans hds0 i) t))) (lift (S (match b with 
101 [true \Rightarrow (trans hds0 i) | false \Rightarrow (plus (trans hds0 i) 
102 h)])) O (lift1 (match b with [true \Rightarrow (PCons h (minus d (S (trans 
103 hds0 i))) (ptrans hds0 i)) | false \Rightarrow (ptrans hds0 i)]) t))))) 
104 (\lambda (H0: (eq bool (blt (trans hds0 i) d) true)).(eq_ind_r nat (plus (S 
105 (trans hds0 i)) (minus d (S (trans hds0 i)))) (\lambda (n: nat).(eq T (lift h 
106 n (lift (S (trans hds0 i)) O (lift1 (ptrans hds0 i) t))) (lift (S (trans hds0 
107 i)) O (lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) t)))) 
108 (eq_ind_r T (lift (S (trans hds0 i)) O (lift h (minus d (S (trans hds0 i))) 
109 (lift1 (ptrans hds0 i) t))) (\lambda (t0: T).(eq T t0 (lift (S (trans hds0 
110 i)) O (lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) t)))) 
111 (refl_equal T (lift (S (trans hds0 i)) O (lift1 (PCons h (minus d (S (trans 
112 hds0 i))) (ptrans hds0 i)) t))) (lift h (plus (S (trans hds0 i)) (minus d (S 
113 (trans hds0 i)))) (lift (S (trans hds0 i)) O (lift1 (ptrans hds0 i) t))) 
114 (lift_d (lift1 (ptrans hds0 i) t) h (S (trans hds0 i)) (minus d (S (trans 
115 hds0 i))) O (le_O_n (minus d (S (trans hds0 i)))))) d (le_plus_minus (S 
116 (trans hds0 i)) d (bge_le (S (trans hds0 i)) d (le_bge (S (trans hds0 i)) d 
117 (lt_le_S (trans hds0 i) d (blt_lt d (trans hds0 i) H0))))))) (\lambda (H0: 
118 (eq bool (blt (trans hds0 i) d) false)).(eq_ind_r T (lift (plus h (S (trans 
119 hds0 i))) O (lift1 (ptrans hds0 i) t)) (\lambda (t0: T).(eq T t0 (lift (S 
120 (plus (trans hds0 i) h)) O (lift1 (ptrans hds0 i) t)))) (eq_ind nat (S (plus 
121 h (trans hds0 i))) (\lambda (n: nat).(eq T (lift n O (lift1 (ptrans hds0 i) 
122 t)) (lift (S (plus (trans hds0 i) h)) O (lift1 (ptrans hds0 i) t)))) 
123 (eq_ind_r nat (plus (trans hds0 i) h) (\lambda (n: nat).(eq T (lift (S n) O 
124 (lift1 (ptrans hds0 i) t)) (lift (S (plus (trans hds0 i) h)) O (lift1 (ptrans 
125 hds0 i) t)))) (refl_equal T (lift (S (plus (trans hds0 i) h)) O (lift1 
126 (ptrans hds0 i) t))) (plus h (trans hds0 i)) (plus_sym h (trans hds0 i))) 
127 (plus h (S (trans hds0 i))) (plus_n_Sm h (trans hds0 i))) (lift h d (lift (S 
128 (trans hds0 i)) O (lift1 (ptrans hds0 i) t))) (lift_free (lift1 (ptrans hds0 
129 i) t) (S (trans hds0 i)) h O d (eq_ind nat (S (plus O (trans hds0 i))) 
130 (\lambda (n: nat).(le d n)) (eq_ind_r nat (plus (trans hds0 i) O) (\lambda 
131 (n: nat).(le d (S n))) (le_S d (plus (trans hds0 i) O) (le_plus_trans d 
132 (trans hds0 i) O (bge_le d (trans hds0 i) H0))) (plus O (trans hds0 i)) 
133 (plus_sym O (trans hds0 i))) (plus O (S (trans hds0 i))) (plus_n_Sm O (trans 
134 hds0 i))) (le_O_n d)))) x_x))) (lift1 hds0 (lift (S i) O t)) (H i t)))))))) 
135 hds).
136 (* COMMENTS
137 Initial nodes: 1339
138 END *)
139