]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/LAMBDA-TYPES/Level-1/LambdaDelta/lift1/props.ma
ok up to arity assignment
[helm.git] / helm / software / matita / contribs / LAMBDA-TYPES / Level-1 / LambdaDelta / 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 set "baseuri" "cic:/matita/LAMBDA-TYPES/Level-1/LambdaDelta/lift1/props".
18
19 include "lift1/defs.ma".
20
21 include "lift/props.ma".
22
23 include "drop1/defs.ma".
24
25 theorem lift1_xhg:
26  \forall (hds: PList).(\forall (t: T).(eq T (lift1 (Ss hds) (lift (S O) O t)) 
27 (lift (S O) O (lift1 hds t))))
28 \def
29  \lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall (t: T).(eq T 
30 (lift1 (Ss p) (lift (S O) O t)) (lift (S O) O (lift1 p t))))) (\lambda (t: 
31 T).(refl_equal T (lift (S O) O t))) (\lambda (h: nat).(\lambda (d: 
32 nat).(\lambda (p: PList).(\lambda (H: ((\forall (t: T).(eq T (lift1 (Ss p) 
33 (lift (S O) O t)) (lift (S O) O (lift1 p t)))))).(\lambda (t: T).(eq_ind_r T 
34 (lift (S O) O (lift1 p t)) (\lambda (t0: T).(eq T (lift h (S d) t0) (lift (S 
35 O) O (lift h d (lift1 p t))))) (eq_ind nat (plus (S O) d) (\lambda (n: 
36 nat).(eq T (lift h n (lift (S O) O (lift1 p t))) (lift (S O) O (lift h d 
37 (lift1 p t))))) (eq_ind_r T (lift (S O) O (lift h d (lift1 p t))) (\lambda 
38 (t0: T).(eq T t0 (lift (S O) O (lift h d (lift1 p t))))) (refl_equal T (lift 
39 (S O) O (lift h d (lift1 p t)))) (lift h (plus (S O) d) (lift (S O) O (lift1 
40 p t))) (lift_d (lift1 p t) h (S O) d O (le_O_n d))) (S d) (refl_equal nat (S 
41 d))) (lift1 (Ss p) (lift (S O) O t)) (H t))))))) hds).
42
43 theorem lifts1_xhg:
44  \forall (hds: PList).(\forall (ts: TList).(eq TList (lifts1 (Ss hds) (lifts 
45 (S O) O ts)) (lifts (S O) O (lifts1 hds ts))))
46 \def
47  \lambda (hds: PList).(\lambda (ts: TList).(TList_ind (\lambda (t: TList).(eq 
48 TList (lifts1 (Ss hds) (lifts (S O) O t)) (lifts (S O) O (lifts1 hds t)))) 
49 (refl_equal TList TNil) (\lambda (t: T).(\lambda (t0: TList).(\lambda (H: (eq 
50 TList (lifts1 (Ss hds) (lifts (S O) O t0)) (lifts (S O) O (lifts1 hds 
51 t0)))).(eq_ind_r T (lift (S O) O (lift1 hds t)) (\lambda (t1: T).(eq TList 
52 (TCons t1 (lifts1 (Ss hds) (lifts (S O) O t0))) (TCons (lift (S O) O (lift1 
53 hds t)) (lifts (S O) O (lifts1 hds t0))))) (eq_ind_r TList (lifts (S O) O 
54 (lifts1 hds t0)) (\lambda (t1: TList).(eq TList (TCons (lift (S O) O (lift1 
55 hds t)) t1) (TCons (lift (S O) O (lift1 hds t)) (lifts (S O) O (lifts1 hds 
56 t0))))) (refl_equal TList (TCons (lift (S O) O (lift1 hds t)) (lifts (S O) O 
57 (lifts1 hds t0)))) (lifts1 (Ss hds) (lifts (S O) O t0)) H) (lift1 (Ss hds) 
58 (lift (S O) O t)) (lift1_xhg hds t))))) ts)).
59
60 theorem lift1_free:
61  \forall (hds: PList).(\forall (i: nat).(\forall (t: T).(eq T (lift1 hds 
62 (lift (S i) O t)) (lift (S (trans hds i)) O (ctrans hds i t)))))
63 \def
64  \lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall (i: 
65 nat).(\forall (t: T).(eq T (lift1 p (lift (S i) O t)) (lift (S (trans p i)) O 
66 (ctrans p i t)))))) (\lambda (i: nat).(\lambda (t: T).(refl_equal T (lift (S 
67 i) O t)))) (\lambda (h: nat).(\lambda (d: nat).(\lambda (hds0: 
68 PList).(\lambda (H: ((\forall (i: nat).(\forall (t: T).(eq T (lift1 hds0 
69 (lift (S i) O t)) (lift (S (trans hds0 i)) O (ctrans hds0 i t))))))).(\lambda 
70 (i: nat).(\lambda (t: T).(eq_ind_r T (lift (S (trans hds0 i)) O (ctrans hds0 
71 i t)) (\lambda (t0: T).(eq T (lift h d t0) (lift (S (match (blt (trans hds0 
72 i) d) with [true \Rightarrow (trans hds0 i) | false \Rightarrow (plus (trans 
73 hds0 i) h)])) O (match (blt (trans hds0 i) d) with [true \Rightarrow (lift h 
74 (minus d (S (trans hds0 i))) (ctrans hds0 i t)) | false \Rightarrow (ctrans 
75 hds0 i t)])))) (xinduction bool (blt (trans hds0 i) d) (\lambda (b: bool).(eq 
76 T (lift h d (lift (S (trans hds0 i)) O (ctrans hds0 i t))) (lift (S (match b 
77 with [true \Rightarrow (trans hds0 i) | false \Rightarrow (plus (trans hds0 
78 i) h)])) O (match b with [true \Rightarrow (lift h (minus d (S (trans hds0 
79 i))) (ctrans hds0 i t)) | false \Rightarrow (ctrans hds0 i t)])))) (\lambda 
80 (x_x: bool).(bool_ind (\lambda (b: bool).((eq bool (blt (trans hds0 i) d) b) 
81 \to (eq T (lift h d (lift (S (trans hds0 i)) O (ctrans hds0 i t))) (lift (S 
82 (match b with [true \Rightarrow (trans hds0 i) | false \Rightarrow (plus 
83 (trans hds0 i) h)])) O (match b with [true \Rightarrow (lift h (minus d (S 
84 (trans hds0 i))) (ctrans hds0 i t)) | false \Rightarrow (ctrans hds0 i 
85 t)]))))) (\lambda (H0: (eq bool (blt (trans hds0 i) d) true)).(eq_ind_r nat 
86 (plus (S (trans hds0 i)) (minus d (S (trans hds0 i)))) (\lambda (n: nat).(eq 
87 T (lift h n (lift (S (trans hds0 i)) O (ctrans hds0 i t))) (lift (S (trans 
88 hds0 i)) O (lift h (minus d (S (trans hds0 i))) (ctrans hds0 i t))))) 
89 (eq_ind_r T (lift (S (trans hds0 i)) O (lift h (minus d (S (trans hds0 i))) 
90 (ctrans hds0 i t))) (\lambda (t0: T).(eq T t0 (lift (S (trans hds0 i)) O 
91 (lift h (minus d (S (trans hds0 i))) (ctrans hds0 i t))))) (refl_equal T 
92 (lift (S (trans hds0 i)) O (lift h (minus d (S (trans hds0 i))) (ctrans hds0 
93 i t)))) (lift h (plus (S (trans hds0 i)) (minus d (S (trans hds0 i)))) (lift 
94 (S (trans hds0 i)) O (ctrans hds0 i t))) (lift_d (ctrans hds0 i t) h (S 
95 (trans hds0 i)) (minus d (S (trans hds0 i))) O (le_O_n (minus d (S (trans 
96 hds0 i)))))) d (le_plus_minus (S (trans hds0 i)) d (bge_le (S (trans hds0 i)) 
97 d (le_bge (S (trans hds0 i)) d (lt_le_S (trans hds0 i) d (blt_lt d (trans 
98 hds0 i) H0))))))) (\lambda (H0: (eq bool (blt (trans hds0 i) d) 
99 false)).(eq_ind_r T (lift (plus h (S (trans hds0 i))) O (ctrans hds0 i t)) 
100 (\lambda (t0: T).(eq T t0 (lift (S (plus (trans hds0 i) h)) O (ctrans hds0 i 
101 t)))) (eq_ind nat (S (plus h (trans hds0 i))) (\lambda (n: nat).(eq T (lift n 
102 O (ctrans hds0 i t)) (lift (S (plus (trans hds0 i) h)) O (ctrans hds0 i t)))) 
103 (eq_ind_r nat (plus (trans hds0 i) h) (\lambda (n: nat).(eq T (lift (S n) O 
104 (ctrans hds0 i t)) (lift (S (plus (trans hds0 i) h)) O (ctrans hds0 i t)))) 
105 (refl_equal T (lift (S (plus (trans hds0 i) h)) O (ctrans hds0 i t))) (plus h 
106 (trans hds0 i)) (plus_comm h (trans hds0 i))) (plus h (S (trans hds0 i))) 
107 (plus_n_Sm h (trans hds0 i))) (lift h d (lift (S (trans hds0 i)) O (ctrans 
108 hds0 i t))) (lift_free (ctrans hds0 i t) (S (trans hds0 i)) h O d (eq_ind nat 
109 (S (plus O (trans hds0 i))) (\lambda (n: nat).(le d n)) (eq_ind_r nat (plus 
110 (trans hds0 i) O) (\lambda (n: nat).(le d (S n))) (le_S d (plus (trans hds0 
111 i) O) (le_plus_trans d (trans hds0 i) O (bge_le d (trans hds0 i) H0))) (plus 
112 O (trans hds0 i)) (plus_comm O (trans hds0 i))) (plus O (S (trans hds0 i))) 
113 (plus_n_Sm O (trans hds0 i))) (le_O_n d)))) x_x))) (lift1 hds0 (lift (S i) O 
114 t)) (H i t)))))))) hds).
115