DEFINITION terms_props__bind_dec()
TYPE =
       b1:B.b2:B.(or (eq B b1 b2) (eq B b1 b2)P:Prop.P)
BODY =
       assume b1B
          we proceed by induction on b1 to prove b2:B.(or (eq B b1 b2) (eq B b1 b2)P:Prop.P)
             case Abbr : 
                the thesis becomes b2:B.(or (eq B Abbr b2) (eq B Abbr b2)P:Prop.P)
                   assume b2B
                      we proceed by induction on b2 to prove or (eq B Abbr b2) (eq B Abbr b2)P:Prop.P
                         case Abbr : 
                            the thesis becomes or (eq B Abbr Abbr) (eq B Abbr Abbr)P:Prop.P
                               by (refl_equal . .)
                               we proved eq B Abbr Abbr
                               by (or_introl . . previous)
or (eq B Abbr Abbr) (eq B Abbr Abbr)P:Prop.P
                         case Abst : 
                            the thesis becomes or (eq B Abbr Abst) (eq B Abbr Abst)P:Prop.P
                                suppose Heq B Abbr Abst
                                assume PProp
                                  (H0
                                     we proceed by induction on H to prove <λ:B.Prop> CASE Abst OF AbbrTrue | AbstFalse | VoidFalse
                                        case refl_equal : 
                                           the thesis becomes <λ:B.Prop> CASE Abbr OF AbbrTrue | AbstFalse | VoidFalse
                                              consider I
                                              we proved True
<λ:B.Prop> CASE Abbr OF AbbrTrue | AbstFalse | VoidFalse
<λ:B.Prop> CASE Abst OF AbbrTrue | AbstFalse | VoidFalse
                                  end of H0
                                  consider H0
                                  we proved <λ:B.Prop> CASE Abst OF AbbrTrue | AbstFalse | VoidFalse
                                  that is equivalent to False
                                  we proceed by induction on the previous result to prove P
                                  we proved P
                               we proved (eq B Abbr Abst)P:Prop.P
                               by (or_intror . . previous)
or (eq B Abbr Abst) (eq B Abbr Abst)P:Prop.P
                         case Void : 
                            the thesis becomes or (eq B Abbr Void) (eq B Abbr Void)P:Prop.P
                                suppose Heq B Abbr Void
                                assume PProp
                                  (H0
                                     we proceed by induction on H to prove <λ:B.Prop> CASE Void OF AbbrTrue | AbstFalse | VoidFalse
                                        case refl_equal : 
                                           the thesis becomes <λ:B.Prop> CASE Abbr OF AbbrTrue | AbstFalse | VoidFalse
                                              consider I
                                              we proved True
<λ:B.Prop> CASE Abbr OF AbbrTrue | AbstFalse | VoidFalse
<λ:B.Prop> CASE Void OF AbbrTrue | AbstFalse | VoidFalse
                                  end of H0
                                  consider H0
                                  we proved <λ:B.Prop> CASE Void OF AbbrTrue | AbstFalse | VoidFalse
                                  that is equivalent to False
                                  we proceed by induction on the previous result to prove P
                                  we proved P
                               we proved (eq B Abbr Void)P:Prop.P
                               by (or_intror . . previous)
or (eq B Abbr Void) (eq B Abbr Void)P:Prop.P
                      we proved or (eq B Abbr b2) (eq B Abbr b2)P:Prop.P
b2:B.(or (eq B Abbr b2) (eq B Abbr b2)P:Prop.P)
             case Abst : 
                the thesis becomes b2:B.(or (eq B Abst b2) (eq B Abst b2)P:Prop.P)
                   assume b2B
                      we proceed by induction on b2 to prove or (eq B Abst b2) (eq B Abst b2)P:Prop.P
                         case Abbr : 
                            the thesis becomes or (eq B Abst Abbr) (eq B Abst Abbr)P:Prop.P
                                suppose Heq B Abst Abbr
                                assume PProp
                                  (H0
                                     we proceed by induction on H to prove <λ:B.Prop> CASE Abbr OF AbbrFalse | AbstTrue | VoidFalse
                                        case refl_equal : 
                                           the thesis becomes <λ:B.Prop> CASE Abst OF AbbrFalse | AbstTrue | VoidFalse
                                              consider I
                                              we proved True
<λ:B.Prop> CASE Abst OF AbbrFalse | AbstTrue | VoidFalse
<λ:B.Prop> CASE Abbr OF AbbrFalse | AbstTrue | VoidFalse
                                  end of H0
                                  consider H0
                                  we proved <λ:B.Prop> CASE Abbr OF AbbrFalse | AbstTrue | VoidFalse
                                  that is equivalent to False
                                  we proceed by induction on the previous result to prove P
                                  we proved P
                               we proved (eq B Abst Abbr)P:Prop.P
                               by (or_intror . . previous)
or (eq B Abst Abbr) (eq B Abst Abbr)P:Prop.P
                         case Abst : 
                            the thesis becomes or (eq B Abst Abst) (eq B Abst Abst)P:Prop.P
                               by (refl_equal . .)
                               we proved eq B Abst Abst
                               by (or_introl . . previous)
or (eq B Abst Abst) (eq B Abst Abst)P:Prop.P
                         case Void : 
                            the thesis becomes or (eq B Abst Void) (eq B Abst Void)P:Prop.P
                                suppose Heq B Abst Void
                                assume PProp
                                  (H0
                                     we proceed by induction on H to prove <λ:B.Prop> CASE Void OF AbbrFalse | AbstTrue | VoidFalse
                                        case refl_equal : 
                                           the thesis becomes <λ:B.Prop> CASE Abst OF AbbrFalse | AbstTrue | VoidFalse
                                              consider I
                                              we proved True
<λ:B.Prop> CASE Abst OF AbbrFalse | AbstTrue | VoidFalse
<λ:B.Prop> CASE Void OF AbbrFalse | AbstTrue | VoidFalse
                                  end of H0
                                  consider H0
                                  we proved <λ:B.Prop> CASE Void OF AbbrFalse | AbstTrue | VoidFalse
                                  that is equivalent to False
                                  we proceed by induction on the previous result to prove P
                                  we proved P
                               we proved (eq B Abst Void)P:Prop.P
                               by (or_intror . . previous)
or (eq B Abst Void) (eq B Abst Void)P:Prop.P
                      we proved or (eq B Abst b2) (eq B Abst b2)P:Prop.P
b2:B.(or (eq B Abst b2) (eq B Abst b2)P:Prop.P)
             case Void : 
                the thesis becomes b2:B.(or (eq B Void b2) (eq B Void b2)P:Prop.P)
                   assume b2B
                      we proceed by induction on b2 to prove or (eq B Void b2) (eq B Void b2)P:Prop.P
                         case Abbr : 
                            the thesis becomes or (eq B Void Abbr) (eq B Void Abbr)P:Prop.P
                                suppose Heq B Void Abbr
                                assume PProp
                                  (H0
                                     we proceed by induction on H to prove <λ:B.Prop> CASE Abbr OF AbbrFalse | AbstFalse | VoidTrue
                                        case refl_equal : 
                                           the thesis becomes <λ:B.Prop> CASE Void OF AbbrFalse | AbstFalse | VoidTrue
                                              consider I
                                              we proved True
<λ:B.Prop> CASE Void OF AbbrFalse | AbstFalse | VoidTrue
<λ:B.Prop> CASE Abbr OF AbbrFalse | AbstFalse | VoidTrue
                                  end of H0
                                  consider H0
                                  we proved <λ:B.Prop> CASE Abbr OF AbbrFalse | AbstFalse | VoidTrue
                                  that is equivalent to False
                                  we proceed by induction on the previous result to prove P
                                  we proved P
                               we proved (eq B Void Abbr)P:Prop.P
                               by (or_intror . . previous)
or (eq B Void Abbr) (eq B Void Abbr)P:Prop.P
                         case Abst : 
                            the thesis becomes or (eq B Void Abst) (eq B Void Abst)P:Prop.P
                                suppose Heq B Void Abst
                                assume PProp
                                  (H0
                                     we proceed by induction on H to prove <λ:B.Prop> CASE Abst OF AbbrFalse | AbstFalse | VoidTrue
                                        case refl_equal : 
                                           the thesis becomes <λ:B.Prop> CASE Void OF AbbrFalse | AbstFalse | VoidTrue
                                              consider I
                                              we proved True
<λ:B.Prop> CASE Void OF AbbrFalse | AbstFalse | VoidTrue
<λ:B.Prop> CASE Abst OF AbbrFalse | AbstFalse | VoidTrue
                                  end of H0
                                  consider H0
                                  we proved <λ:B.Prop> CASE Abst OF AbbrFalse | AbstFalse | VoidTrue
                                  that is equivalent to False
                                  we proceed by induction on the previous result to prove P
                                  we proved P
                               we proved (eq B Void Abst)P:Prop.P
                               by (or_intror . . previous)
or (eq B Void Abst) (eq B Void Abst)P:Prop.P
                         case Void : 
                            the thesis becomes or (eq B Void Void) (eq B Void Void)P:Prop.P
                               by (refl_equal . .)
                               we proved eq B Void Void
                               by (or_introl . . previous)
or (eq B Void Void) (eq B Void Void)P:Prop.P
                      we proved or (eq B Void b2) (eq B Void b2)P:Prop.P
b2:B.(or (eq B Void b2) (eq B Void b2)P:Prop.P)
          we proved b2:B.(or (eq B b1 b2) (eq B b1 b2)P:Prop.P)
       we proved b1:B.b2:B.(or (eq B b1 b2) (eq B b1 b2)P:Prop.P)