DEFINITION csubst1_flat()
TYPE =
       f:F
         .i:nat
           .v:T
             .u1:T
               .u2:T
                 .subst1 i v u1 u2
                   c1:C.c2:C.(csubst1 i v c1 c2)(csubst1 i v (CHead c1 (Flat f) u1) (CHead c2 (Flat f) u2))
BODY =
        assume fF
        assume inat
        assume vT
        assume u1T
        assume u2T
        suppose Hsubst1 i v u1 u2
        assume c1C
        assume c2C
        suppose H0csubst1 i v c1 c2
          by (refl_equal . .)
          we proved eq nat i i
          that is equivalent to eq nat (s (Flat f) i) i
          we proceed by induction on the previous result to prove csubst1 i v (CHead c1 (Flat f) u1) (CHead c2 (Flat f) u2)
             case refl_equal : 
                the thesis becomes csubst1 (s (Flat f) i) v (CHead c1 (Flat f) u1) (CHead c2 (Flat f) u2)
                   by (csubst1_head . . . . . H . . H0)
csubst1 (s (Flat f) i) v (CHead c1 (Flat f) u1) (CHead c2 (Flat f) u2)
          we proved csubst1 i v (CHead c1 (Flat f) u1) (CHead c2 (Flat f) u2)
       we proved 
          f:F
            .i:nat
              .v:T
                .u1:T
                  .u2:T
                    .subst1 i v u1 u2
                      c1:C.c2:C.(csubst1 i v c1 c2)(csubst1 i v (CHead c1 (Flat f) u1) (CHead c2 (Flat f) u2))