1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* This file was automatically generated: do not edit *********************)
17 include "basic_1/csubt/fwd.ma".
19 include "basic_1/clear/fwd.ma".
21 theorem csubt_clear_conf:
22 \forall (g: G).(\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to
23 (\forall (e1: C).((clear c1 e1) \to (ex2 C (\lambda (e2: C).(csubt g e1 e2))
24 (\lambda (e2: C).(clear c2 e2))))))))
26 \lambda (g: G).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csubt g c1
27 c2)).(let TMP_3 \def (\lambda (c: C).(\lambda (c0: C).(\forall (e1:
28 C).((clear c e1) \to (let TMP_1 \def (\lambda (e2: C).(csubt g e1 e2)) in
29 (let TMP_2 \def (\lambda (e2: C).(clear c0 e2)) in (ex2 C TMP_1 TMP_2)))))))
30 in (let TMP_8 \def (\lambda (n: nat).(\lambda (e1: C).(\lambda (H0: (clear
31 (CSort n) e1)).(let TMP_4 \def (\lambda (e2: C).(csubt g e1 e2)) in (let
32 TMP_6 \def (\lambda (e2: C).(let TMP_5 \def (CSort n) in (clear TMP_5 e2)))
33 in (let TMP_7 \def (ex2 C TMP_4 TMP_6) in (clear_gen_sort e1 n H0
34 TMP_7))))))) in (let TMP_49 \def (\lambda (c3: C).(\lambda (c4: C).(\lambda
35 (H0: (csubt g c3 c4)).(\lambda (H1: ((\forall (e1: C).((clear c3 e1) \to (ex2
36 C (\lambda (e2: C).(csubt g e1 e2)) (\lambda (e2: C).(clear c4
37 e2))))))).(\lambda (k: K).(\lambda (u: T).(\lambda (e1: C).(\lambda (H2:
38 (clear (CHead c3 k u) e1)).(let TMP_12 \def (\lambda (k0: K).((clear (CHead
39 c3 k0 u) e1) \to (let TMP_9 \def (\lambda (e2: C).(csubt g e1 e2)) in (let
40 TMP_11 \def (\lambda (e2: C).(let TMP_10 \def (CHead c4 k0 u) in (clear
41 TMP_10 e2))) in (ex2 C TMP_9 TMP_11))))) in (let TMP_33 \def (\lambda (b:
42 B).(\lambda (H3: (clear (CHead c3 (Bind b) u) e1)).(let TMP_13 \def (Bind b)
43 in (let TMP_14 \def (CHead c3 TMP_13 u) in (let TMP_19 \def (\lambda (c:
44 C).(let TMP_15 \def (\lambda (e2: C).(csubt g c e2)) in (let TMP_18 \def
45 (\lambda (e2: C).(let TMP_16 \def (Bind b) in (let TMP_17 \def (CHead c4
46 TMP_16 u) in (clear TMP_17 e2)))) in (ex2 C TMP_15 TMP_18)))) in (let TMP_22
47 \def (\lambda (e2: C).(let TMP_20 \def (Bind b) in (let TMP_21 \def (CHead c3
48 TMP_20 u) in (csubt g TMP_21 e2)))) in (let TMP_25 \def (\lambda (e2: C).(let
49 TMP_23 \def (Bind b) in (let TMP_24 \def (CHead c4 TMP_23 u) in (clear TMP_24
50 e2)))) in (let TMP_26 \def (Bind b) in (let TMP_27 \def (CHead c4 TMP_26 u)
51 in (let TMP_28 \def (Bind b) in (let TMP_29 \def (csubt_head g c3 c4 H0
52 TMP_28 u) in (let TMP_30 \def (clear_bind b c4 u) in (let TMP_31 \def
53 (ex_intro2 C TMP_22 TMP_25 TMP_27 TMP_29 TMP_30) in (let TMP_32 \def
54 (clear_gen_bind b c3 e1 u H3) in (eq_ind_r C TMP_14 TMP_19 TMP_31 e1
55 TMP_32))))))))))))))) in (let TMP_48 \def (\lambda (f: F).(\lambda (H3:
56 (clear (CHead c3 (Flat f) u) e1)).(let TMP_34 \def (clear_gen_flat f c3 e1 u
57 H3) in (let H4 \def (H1 e1 TMP_34) in (let TMP_35 \def (\lambda (e2:
58 C).(csubt g e1 e2)) in (let TMP_36 \def (\lambda (e2: C).(clear c4 e2)) in
59 (let TMP_37 \def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_40 \def
60 (\lambda (e2: C).(let TMP_38 \def (Flat f) in (let TMP_39 \def (CHead c4
61 TMP_38 u) in (clear TMP_39 e2)))) in (let TMP_41 \def (ex2 C TMP_37 TMP_40)
62 in (let TMP_47 \def (\lambda (x: C).(\lambda (H5: (csubt g e1 x)).(\lambda
63 (H6: (clear c4 x)).(let TMP_42 \def (\lambda (e2: C).(csubt g e1 e2)) in (let
64 TMP_45 \def (\lambda (e2: C).(let TMP_43 \def (Flat f) in (let TMP_44 \def
65 (CHead c4 TMP_43 u) in (clear TMP_44 e2)))) in (let TMP_46 \def (clear_flat
66 c4 x H6 f u) in (ex_intro2 C TMP_42 TMP_45 x H5 TMP_46))))))) in (ex2_ind C
67 TMP_35 TMP_36 TMP_41 TMP_47 H4))))))))))) in (K_ind TMP_12 TMP_33 TMP_48 k
68 H2)))))))))))) in (let TMP_69 \def (\lambda (c3: C).(\lambda (c4: C).(\lambda
69 (H0: (csubt g c3 c4)).(\lambda (_: ((\forall (e1: C).((clear c3 e1) \to (ex2
70 C (\lambda (e2: C).(csubt g e1 e2)) (\lambda (e2: C).(clear c4
71 e2))))))).(\lambda (b: B).(\lambda (H2: (not (eq B b Void))).(\lambda (u1:
72 T).(\lambda (u2: T).(\lambda (e1: C).(\lambda (H3: (clear (CHead c3 (Bind
73 Void) u1) e1)).(let TMP_50 \def (Bind Void) in (let TMP_51 \def (CHead c3
74 TMP_50 u1) in (let TMP_56 \def (\lambda (c: C).(let TMP_52 \def (\lambda (e2:
75 C).(csubt g c e2)) in (let TMP_55 \def (\lambda (e2: C).(let TMP_53 \def
76 (Bind b) in (let TMP_54 \def (CHead c4 TMP_53 u2) in (clear TMP_54 e2)))) in
77 (ex2 C TMP_52 TMP_55)))) in (let TMP_59 \def (\lambda (e2: C).(let TMP_57
78 \def (Bind Void) in (let TMP_58 \def (CHead c3 TMP_57 u1) in (csubt g TMP_58
79 e2)))) in (let TMP_62 \def (\lambda (e2: C).(let TMP_60 \def (Bind b) in (let
80 TMP_61 \def (CHead c4 TMP_60 u2) in (clear TMP_61 e2)))) in (let TMP_63 \def
81 (Bind b) in (let TMP_64 \def (CHead c4 TMP_63 u2) in (let TMP_65 \def
82 (csubt_void g c3 c4 H0 b H2 u1 u2) in (let TMP_66 \def (clear_bind b c4 u2)
83 in (let TMP_67 \def (ex_intro2 C TMP_59 TMP_62 TMP_64 TMP_65 TMP_66) in (let
84 TMP_68 \def (clear_gen_bind Void c3 e1 u1 H3) in (eq_ind_r C TMP_51 TMP_56
85 TMP_67 e1 TMP_68)))))))))))))))))))))) in (let TMP_89 \def (\lambda (c3:
86 C).(\lambda (c4: C).(\lambda (H0: (csubt g c3 c4)).(\lambda (_: ((\forall
87 (e1: C).((clear c3 e1) \to (ex2 C (\lambda (e2: C).(csubt g e1 e2)) (\lambda
88 (e2: C).(clear c4 e2))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (H2:
89 (ty3 g c3 u t)).(\lambda (H3: (ty3 g c4 u t)).(\lambda (e1: C).(\lambda (H4:
90 (clear (CHead c3 (Bind Abst) t) e1)).(let TMP_70 \def (Bind Abst) in (let
91 TMP_71 \def (CHead c3 TMP_70 t) in (let TMP_76 \def (\lambda (c: C).(let
92 TMP_72 \def (\lambda (e2: C).(csubt g c e2)) in (let TMP_75 \def (\lambda
93 (e2: C).(let TMP_73 \def (Bind Abbr) in (let TMP_74 \def (CHead c4 TMP_73 u)
94 in (clear TMP_74 e2)))) in (ex2 C TMP_72 TMP_75)))) in (let TMP_79 \def
95 (\lambda (e2: C).(let TMP_77 \def (Bind Abst) in (let TMP_78 \def (CHead c3
96 TMP_77 t) in (csubt g TMP_78 e2)))) in (let TMP_82 \def (\lambda (e2: C).(let
97 TMP_80 \def (Bind Abbr) in (let TMP_81 \def (CHead c4 TMP_80 u) in (clear
98 TMP_81 e2)))) in (let TMP_83 \def (Bind Abbr) in (let TMP_84 \def (CHead c4
99 TMP_83 u) in (let TMP_85 \def (csubt_abst g c3 c4 H0 u t H2 H3) in (let
100 TMP_86 \def (clear_bind Abbr c4 u) in (let TMP_87 \def (ex_intro2 C TMP_79
101 TMP_82 TMP_84 TMP_85 TMP_86) in (let TMP_88 \def (clear_gen_bind Abst c3 e1 t
102 H4) in (eq_ind_r C TMP_71 TMP_76 TMP_87 e1 TMP_88)))))))))))))))))))))) in
103 (csubt_ind g TMP_3 TMP_8 TMP_49 TMP_69 TMP_89 c1 c2 H))))))))).