DEFINITION csubst0_clear_O()
TYPE =
       c1:C.c2:C.v:T.(csubst0 O v c1 c2)c:C.(clear c1 c)(clear c2 c)
BODY =
       assume c1C
          we proceed by induction on c1 to prove c2:C.v:T.(csubst0 O v c1 c2)c0:C.(clear c1 c0)(clear c2 c0)
             case CSort : n:nat 
                the thesis becomes c2:C.v:T.H:(csubst0 O v (CSort n) c2).c:C.(clear (CSort n) c)(clear c2 c)
                    assume c2C
                    assume vT
                    suppose Hcsubst0 O v (CSort n) c2
                    assume cC
                    suppose clear (CSort n) c
                      by (csubst0_gen_sort . . . . H .)
                      we proved clear c2 c
c2:C.v:T.H:(csubst0 O v (CSort n) c2).c:C.(clear (CSort n) c)(clear c2 c)
             case CHead : c:C k:K t:T 
                the thesis becomes c2:C.v:T.H0:(csubst0 O v (CHead c k t) c2).c0:C.H1:(clear (CHead c k t) c0).(clear c2 c0)
                (H) by induction hypothesis we know c2:C.v:T.(csubst0 O v c c2)c0:C.(clear c c0)(clear c2 c0)
                    assume c2C
                    assume vT
                    suppose H0csubst0 O v (CHead c k t) c2
                    assume c0C
                    suppose H1clear (CHead c k t) c0
                      by (csubst0_gen_head . . . . . . H0)
                      we proved 
                         or3
                           ex3_2
                             T
                             nat
                             λ:T.λj:nat.eq nat O (s k j)
                             λu2:T.λ:nat.eq C c2 (CHead c k u2)
                             λu2:T.λj:nat.subst0 j v t u2
                           ex3_2
                             C
                             nat
                             λ:C.λj:nat.eq nat O (s k j)
                             λc2:C.λ:nat.eq C c2 (CHead c2 k t)
                             λc2:C.λj:nat.csubst0 j v c c2
                           ex4_3
                             T
                             C
                             nat
                             λ:T.λ:C.λj:nat.eq nat O (s k j)
                             λu2:T.λc2:C.λ:nat.eq C c2 (CHead c2 k u2)
                             λu2:T.λ:C.λj:nat.subst0 j v t u2
                             λ:T.λc2:C.λj:nat.csubst0 j v c c2
                      we proceed by induction on the previous result to prove clear c2 c0
                         case or3_intro0 : H2:ex3_2 T nat λ:T.λj:nat.eq nat O (s k j) λu2:T.λ:nat.eq C c2 (CHead c k u2) λu2:T.λj:nat.subst0 j v t u2 
                            the thesis becomes clear c2 c0
                               we proceed by induction on H2 to prove clear c2 c0
                                  case ex3_2_intro : x0:T x1:nat H3:eq nat O (s k x1) H4:eq C c2 (CHead c k x0) H5:subst0 x1 v t x0 
                                     the thesis becomes clear c2 c0
                                           assume bB
                                            suppose clear (CHead c (Bind b) t) c0
                                            suppose H7eq nat O (s (Bind b) x1)
                                              (H8
                                                 consider H7
                                                 we proved eq nat O (s (Bind b) x1)
                                                 that is equivalent to eq nat O (S x1)
                                                 we proceed by induction on the previous result to prove <λ:nat.Prop> CASE S x1 OF OTrue | S False
                                                    case refl_equal : 
                                                       the thesis becomes <λ:nat.Prop> CASE O OF OTrue | S False
                                                          consider I
                                                          we proved True
<λ:nat.Prop> CASE O OF OTrue | S False
<λ:nat.Prop> CASE S x1 OF OTrue | S False
                                              end of H8
                                              consider H8
                                              we proved <λ:nat.Prop> CASE S x1 OF OTrue | S False
                                              that is equivalent to False
                                              we proceed by induction on the previous result to prove clear (CHead c (Bind b) x0) c0
                                              we proved clear (CHead c (Bind b) x0) c0

                                              clear (CHead c (Bind b) t) c0
                                                H7:(eq nat O (s (Bind b) x1)).(clear (CHead c (Bind b) x0) c0)
                                           assume fF
                                            suppose H6clear (CHead c (Flat f) t) c0
                                            suppose H7eq nat O (s (Flat f) x1)
                                              by (clear_gen_flat . . . . H6)
                                              we proved clear c c0
                                              by (clear_flat . . previous . .)
                                              we proved clear (CHead c (Flat f) x0) c0

                                              H6:clear (CHead c (Flat f) t) c0
                                                .H7:(eq nat O (s (Flat f) x1)).(clear (CHead c (Flat f) x0) c0)
                                        by (previous . H1 H3)
                                        we proved clear (CHead c k x0) c0
                                        by (eq_ind_r . . . previous . H4)
clear c2 c0
clear c2 c0
                         case or3_intro1 : H2:ex3_2 C nat λ:C.λj:nat.eq nat O (s k j) λc3:C.λ:nat.eq C c2 (CHead c3 k t) λc3:C.λj:nat.csubst0 j v c c3 
                            the thesis becomes clear c2 c0
                               we proceed by induction on H2 to prove clear c2 c0
                                  case ex3_2_intro : x0:C x1:nat H3:eq nat O (s k x1) H4:eq C c2 (CHead x0 k t) H5:csubst0 x1 v c x0 
                                     the thesis becomes clear c2 c0
                                           assume bB
                                            suppose clear (CHead c (Bind b) t) c0
                                            suppose H7eq nat O (s (Bind b) x1)
                                              (H8
                                                 consider H7
                                                 we proved eq nat O (s (Bind b) x1)
                                                 that is equivalent to eq nat O (S x1)
                                                 we proceed by induction on the previous result to prove <λ:nat.Prop> CASE S x1 OF OTrue | S False
                                                    case refl_equal : 
                                                       the thesis becomes <λ:nat.Prop> CASE O OF OTrue | S False
                                                          consider I
                                                          we proved True
<λ:nat.Prop> CASE O OF OTrue | S False
<λ:nat.Prop> CASE S x1 OF OTrue | S False
                                              end of H8
                                              consider H8
                                              we proved <λ:nat.Prop> CASE S x1 OF OTrue | S False
                                              that is equivalent to False
                                              we proceed by induction on the previous result to prove clear (CHead x0 (Bind b) t) c0
                                              we proved clear (CHead x0 (Bind b) t) c0

                                              clear (CHead c (Bind b) t) c0
                                                H7:(eq nat O (s (Bind b) x1)).(clear (CHead x0 (Bind b) t) c0)
                                           assume fF
                                            suppose H6clear (CHead c (Flat f) t) c0
                                            suppose H7eq nat O (s (Flat f) x1)
                                              (H8
                                                 consider H7
                                                 we proved eq nat O (s (Flat f) x1)
                                                 that is equivalent to eq nat O x1
                                                 by (eq_ind_r . . . H5 . previous)
csubst0 O v c x0
                                              end of H8
                                              by (clear_gen_flat . . . . H6)
                                              we proved clear c c0
                                              by (H . . H8 . previous)
                                              we proved clear x0 c0
                                              by (clear_flat . . previous . .)
                                              we proved clear (CHead x0 (Flat f) t) c0

                                              H6:clear (CHead c (Flat f) t) c0
                                                .H7:(eq nat O (s (Flat f) x1)).(clear (CHead x0 (Flat f) t) c0)
                                        by (previous . H1 H3)
                                        we proved clear (CHead x0 k t) c0
                                        by (eq_ind_r . . . previous . H4)
clear c2 c0
clear c2 c0
                         case or3_intro2 : H2:ex4_3 T C nat λ:T.λ:C.λj:nat.eq nat O (s k j) λu2:T.λc3:C.λ:nat.eq C c2 (CHead c3 k u2) λu2:T.λ:C.λj:nat.subst0 j v t u2 λ:T.λc3:C.λj:nat.csubst0 j v c c3 
                            the thesis becomes clear c2 c0
                               we proceed by induction on H2 to prove clear c2 c0
                                  case ex4_3_intro : x0:T x1:C x2:nat H3:eq nat O (s k x2) H4:eq C c2 (CHead x1 k x0) H5:subst0 x2 v t x0 H6:csubst0 x2 v c x1 
                                     the thesis becomes clear c2 c0
                                           assume bB
                                            suppose clear (CHead c (Bind b) t) c0
                                            suppose H8eq nat O (s (Bind b) x2)
                                              (H9
                                                 consider H8
                                                 we proved eq nat O (s (Bind b) x2)
                                                 that is equivalent to eq nat O (S x2)
                                                 we proceed by induction on the previous result to prove <λ:nat.Prop> CASE S x2 OF OTrue | S False
                                                    case refl_equal : 
                                                       the thesis becomes <λ:nat.Prop> CASE O OF OTrue | S False
                                                          consider I
                                                          we proved True
<λ:nat.Prop> CASE O OF OTrue | S False
<λ:nat.Prop> CASE S x2 OF OTrue | S False
                                              end of H9
                                              consider H9
                                              we proved <λ:nat.Prop> CASE S x2 OF OTrue | S False
                                              that is equivalent to False
                                              we proceed by induction on the previous result to prove clear (CHead x1 (Bind b) x0) c0
                                              we proved clear (CHead x1 (Bind b) x0) c0

                                              clear (CHead c (Bind b) t) c0
                                                H8:(eq nat O (s (Bind b) x2)).(clear (CHead x1 (Bind b) x0) c0)
                                           assume fF
                                            suppose H7clear (CHead c (Flat f) t) c0
                                            suppose H8eq nat O (s (Flat f) x2)
                                              (H9
                                                 consider H8
                                                 we proved eq nat O (s (Flat f) x2)
                                                 that is equivalent to eq nat O x2
                                                 by (eq_ind_r . . . H6 . previous)
csubst0 O v c x1
                                              end of H9
                                              by (clear_gen_flat . . . . H7)
                                              we proved clear c c0
                                              by (H . . H9 . previous)
                                              we proved clear x1 c0
                                              by (clear_flat . . previous . .)
                                              we proved clear (CHead x1 (Flat f) x0) c0

                                              H7:clear (CHead c (Flat f) t) c0
                                                .H8:(eq nat O (s (Flat f) x2)).(clear (CHead x1 (Flat f) x0) c0)
                                        by (previous . H1 H3)
                                        we proved clear (CHead x1 k x0) c0
                                        by (eq_ind_r . . . previous . H4)
clear c2 c0
clear c2 c0
                      we proved clear c2 c0
c2:C.v:T.H0:(csubst0 O v (CHead c k t) c2).c0:C.H1:(clear (CHead c k t) c0).(clear c2 c0)
          we proved c2:C.v:T.(csubst0 O v c1 c2)c0:C.(clear c1 c0)(clear c2 c0)
       we proved c1:C.c2:C.v:T.(csubst0 O v c1 c2)c0:C.(clear c1 c0)(clear c2 c0)