DEFINITION aplus_reg_r()
TYPE =
       g:G
         .a1:A
           .a2:A
             .h1:nat
               .h2:nat
                 .eq A (aplus g a1 h1) (aplus g a2 h2)
                   h:nat.(eq A (aplus g a1 (plus h h1)) (aplus g a2 (plus h h2)))
BODY =
        assume gG
        assume a1A
        assume a2A
        assume h1nat
        assume h2nat
        suppose Heq A (aplus g a1 h1) (aplus g a2 h2)
        assume hnat
          we proceed by induction on h to prove eq A (aplus g a1 (plus h h1)) (aplus g a2 (plus h h2))
             case O : 
                the thesis becomes eq A (aplus g a1 (plus O h1)) (aplus g a2 (plus O h2))
                   consider H
                   we proved eq A (aplus g a1 h1) (aplus g a2 h2)
eq A (aplus g a1 (plus O h1)) (aplus g a2 (plus O h2))
             case S : n:nat 
                the thesis becomes eq A (aplus g a1 (plus (S n) h1)) (aplus g a2 (plus (S n) h2))
                (H0) by induction hypothesis we know eq A (aplus g a1 (plus n h1)) (aplus g a2 (plus n h2))
                   by (refl_equal . .)
                   we proved eq G g g
                   by (f_equal2 . . . . . . . . previous H0)
                   we proved 
                      eq
                        A
                        asucc g (aplus g a1 (plus n h1))
                        asucc g (aplus g a2 (plus n h2))
eq A (aplus g a1 (plus (S n) h1)) (aplus g a2 (plus (S n) h2))
          we proved eq A (aplus g a1 (plus h h1)) (aplus g a2 (plus h h2))
       we proved 
          g:G
            .a1:A
              .a2:A
                .h1:nat
                  .h2:nat
                    .eq A (aplus g a1 h1) (aplus g a2 h2)
                      h:nat.(eq A (aplus g a1 (plus h h1)) (aplus g a2 (plus h h2)))