DEFINITION cimp_flat_sx()
TYPE =
       f:F.c:C.v:T.(cimp (CHead c (Flat f) v) c)
BODY =
        assume fF
        assume cC
        assume vT
          we must prove cimp (CHead c (Flat f) v) c
          or equivalently 
                b:B
                  .d1:C
                    .w:T
                      .h:nat
                        .getl h (CHead c (Flat f) v) (CHead d1 (Bind b) w)
                          ex C λd2:C.getl h c (CHead d2 (Bind b) w)
           assume bB
           assume d1C
           assume wT
           assume hnat
           suppose Hgetl h (CHead c (Flat f) v) (CHead d1 (Bind b) w)
             suppose H0getl O (CHead c (Flat f) v) (CHead d1 (Bind b) w)
                (h1
                   by (drop_refl .)
drop O O c c
                end of h1
                (h2
                   by (getl_gen_O . . H0)
                   we proved clear (CHead c (Flat f) v) (CHead d1 (Bind b) w)
                   by (clear_gen_flat . . . . previous)
clear c (CHead d1 (Bind b) w)
                end of h2
                by (getl_intro . . . . h1 h2)
                we proved getl O c (CHead d1 (Bind b) w)
                by (ex_intro . . . previous)
                we proved ex C λd2:C.getl O c (CHead d2 (Bind b) w)

                getl O (CHead c (Flat f) v) (CHead d1 (Bind b) w)
                  ex C λd2:C.getl O c (CHead d2 (Bind b) w)
              assume h0nat
                 suppose 
                    getl h0 (CHead c (Flat f) v) (CHead d1 (Bind b) w)
                      ex C λd2:C.getl h0 c (CHead d2 (Bind b) w)
                suppose H0getl (S h0) (CHead c (Flat f) v) (CHead d1 (Bind b) w)
                   by (getl_gen_S . . . . . H0)
                   we proved getl (r (Flat f) h0) c (CHead d1 (Bind b) w)
                   that is equivalent to getl (S h0) c (CHead d1 (Bind b) w)
                   by (ex_intro . . . previous)
                   we proved ex C λd2:C.getl (S h0) c (CHead d2 (Bind b) w)

                   H0:getl (S h0) (CHead c (Flat f) v) (CHead d1 (Bind b) w)
                     .ex C λd2:C.getl (S h0) c (CHead d2 (Bind b) w)
             by (previous . H)
             we proved ex C λd2:C.getl h c (CHead d2 (Bind b) w)
          we proved 
             b:B
               .d1:C
                 .w:T
                   .h:nat
                     .getl h (CHead c (Flat f) v) (CHead d1 (Bind b) w)
                       ex C λd2:C.getl h c (CHead d2 (Bind b) w)
          that is equivalent to cimp (CHead c (Flat f) v) c
       we proved f:F.c:C.v:T.(cimp (CHead c (Flat f) v) c)