Welcome to Abella 1.1.3-dev2 Reading clauses from add.mod
Abella < Theorem add_base : 
forall N, {nat N} -> {add N z N}.
1 subgoal(s).

  
  ============================
   forall N, {nat N} -> {add N z N}

add_base < induction on 1.
1 subgoal(s).

  
  IH : forall N, {nat N}* -> {add N z N}
  ============================
   forall N, {nat N}@ -> {add N z N}

add_base < intros.
1 subgoal(s).

  Variables: N
  IH : forall N, {nat N}* -> {add N z N}
  H1 : {nat N}@
  ============================
   {add N z N}

add_base < case H1.
2 subgoal(s).

  Variables: N
  IH : forall N, {nat N}* -> {add N z N}
  ============================
   {add z z z}

subgoal 2 is:
 {add (s N1) z (s N1)}

add_base < search.
1 subgoal(s).

  Variables: N, N1
  IH : forall N, {nat N}* -> {add N z N}
  H2 : {nat N1}*
  ============================
   {add (s N1) z (s N1)}

add_base < apply IH to H2.
1 subgoal(s).

  Variables: N, N1
  IH : forall N, {nat N}* -> {add N z N}
  H2 : {nat N1}*
  H3 : {add N1 z N1}
  ============================
   {add (s N1) z (s N1)}

add_base < search.
Proof completed.
Abella < Theorem add_step : 
forall A B C, {add A B C} -> {add A (s B) (s C)}.
1 subgoal(s).

  
  ============================
   forall A B C, {add A B C} -> {add A (s B) (s C)}

add_step < induction on 1.
1 subgoal(s).

  
  IH : forall A B C, {add A B C}* -> {add A (s B) (s C)}
  ============================
   forall A B C, {add A B C}@ -> {add A (s B) (s C)}

add_step < intros.
1 subgoal(s).

  Variables: A, B, C
  IH : forall A B C, {add A B C}* -> {add A (s B) (s C)}
  H1 : {add A B C}@
  ============================
   {add A (s B) (s C)}

add_step < case H1.
2 subgoal(s).

  Variables: A, B, C
  IH : forall A B C, {add A B C}* -> {add A (s B) (s C)}
  ============================
   {add z (s C) (s C)}

subgoal 2 is:
 {add (s A1) (s B) (s (s C1))}

add_step < search.
1 subgoal(s).

  Variables: A, B, C, C1, A1
  IH : forall A B C, {add A B C}* -> {add A (s B) (s C)}
  H2 : {add A1 B C1}*
  ============================
   {add (s A1) (s B) (s (s C1))}

add_step < apply IH to H2.
1 subgoal(s).

  Variables: A, B, C, C1, A1
  IH : forall A B C, {add A B C}* -> {add A (s B) (s C)}
  H2 : {add A1 B C1}*
  H3 : {add A1 (s B) (s C1)}
  ============================
   {add (s A1) (s B) (s (s C1))}

add_step < search.
Proof completed.
Abella < Theorem add_comm : 
forall A B C, {nat B} -> {add A B C} -> {add B A C}.
1 subgoal(s).

  
  ============================
   forall A B C, {nat B} -> {add A B C} -> {add B A C}

add_comm < induction on 2.
1 subgoal(s).

  
  IH : forall A B C, {nat B} -> {add A B C}* -> {add B A C}
  ============================
   forall A B C, {nat B} -> {add A B C}@ -> {add B A C}

add_comm < intros.
1 subgoal(s).

  Variables: A, B, C
  IH : forall A B C, {nat B} -> {add A B C}* -> {add B A C}
  H1 : {nat B}
  H2 : {add A B C}@
  ============================
   {add B A C}

add_comm < case H2.
2 subgoal(s).

  Variables: A, B, C
  IH : forall A B C, {nat B} -> {add A B C}* -> {add B A C}
  H1 : {nat C}
  ============================
   {add C z C}

subgoal 2 is:
 {add B (s A1) (s C1)}

add_comm < apply add_base to H1.
2 subgoal(s).

  Variables: A, B, C
  IH : forall A B C, {nat B} -> {add A B C}* -> {add B A C}
  H1 : {nat C}
  H3 : {add C z C}
  ============================
   {add C z C}

subgoal 2 is:
 {add B (s A1) (s C1)}

add_comm < search.
1 subgoal(s).

  Variables: A, B, C, C1, A1
  IH : forall A B C, {nat B} -> {add A B C}* -> {add B A C}
  H1 : {nat B}
  H3 : {add A1 B C1}*
  ============================
   {add B (s A1) (s C1)}

add_comm < apply IH to H1 H3.
1 subgoal(s).

  Variables: A, B, C, C1, A1
  IH : forall A B C, {nat B} -> {add A B C}* -> {add B A C}
  H1 : {nat B}
  H3 : {add A1 B C1}*
  H4 : {add B A1 C1}
  ============================
   {add B (s A1) (s C1)}

add_comm < apply add_step to H4.
1 subgoal(s).

  Variables: A, B, C, C1, A1
  IH : forall A B C, {nat B} -> {add A B C}* -> {add B A C}
  H1 : {nat B}
  H3 : {add A1 B C1}*
  H4 : {add B A1 C1}
  H5 : {add B (s A1) (s C1)}
  ============================
   {add B (s A1) (s C1)}

add_comm < search.
Proof completed.
Abella < Theorem add_det : 
forall A B C D, {add A B C} -> {add A B D} -> C = D.
1 subgoal(s).

  
  ============================
   forall A B C D, {add A B C} -> {add A B D} -> C = D

add_det < induction on 1.
1 subgoal(s).

  
  IH : forall A B C D, {add A B C}* -> {add A B D} -> C = D
  ============================
   forall A B C D, {add A B C}@ -> {add A B D} -> C = D

add_det < intros.
1 subgoal(s).

  Variables: A, B, C, D
  IH : forall A B C D, {add A B C}* -> {add A B D} -> C = D
  H1 : {add A B C}@
  H2 : {add A B D}
  ============================
   C = D

add_det < case H1.
2 subgoal(s).

  Variables: A, B, C, D
  IH : forall A B C D, {add A B C}* -> {add A B D} -> C = D
  H2 : {add z C D}
  ============================
   C = D

subgoal 2 is:
 s C1 = D

add_det < case H2.
2 subgoal(s).

  Variables: A, B, C, D
  IH : forall A B C D, {add A B C}* -> {add A B D} -> C = D
  ============================
   D = D

subgoal 2 is:
 s C1 = D

add_det < search.
1 subgoal(s).

  Variables: A, B, C, D, C1, A1
  IH : forall A B C D, {add A B C}* -> {add A B D} -> C = D
  H2 : {add (s A1) B D}
  H3 : {add A1 B C1}*
  ============================
   s C1 = D

add_det < case H2.
1 subgoal(s).

  Variables: A, B, C, D, C1, A1, C2
  IH : forall A B C D, {add A B C}* -> {add A B D} -> C = D
  H3 : {add A1 B C1}*
  H4 : {add A1 B C2}
  ============================
   s C1 = s C2

add_det < apply IH to H3 H4.
1 subgoal(s).

  Variables: A, B, C, D, C1, A1, C2
  IH : forall A B C D, {add A B C}* -> {add A B D} -> C = D
  H3 : {add A1 B C2}*
  H4 : {add A1 B C2}
  ============================
   s C2 = s C2

add_det < search.
Proof completed.
Abella < Theorem add_assoc : 
forall A B C AB BC ABC, {add A B AB} -> {add AB C ABC} -> {add B C BC} ->
  {add A BC ABC}.
1 subgoal(s).

  
  ============================
   forall A B C AB BC ABC, {add A B AB} -> {add AB C ABC} -> {add B C BC} ->
     {add A BC ABC}

add_assoc < induction on 1.
1 subgoal(s).

  
  IH : forall A B C AB BC ABC, {add A B AB}* -> {add AB C ABC} ->
         {add B C BC} -> {add A BC ABC}
  ============================
   forall A B C AB BC ABC, {add A B AB}@ -> {add AB C ABC} -> {add B C BC} ->
     {add A BC ABC}

add_assoc < intros.
1 subgoal(s).

  Variables: A, B, C, AB, BC, ABC
  IH : forall A B C AB BC ABC, {add A B AB}* -> {add AB C ABC} ->
         {add B C BC} -> {add A BC ABC}
  H1 : {add A B AB}@
  H2 : {add AB C ABC}
  H3 : {add B C BC}
  ============================
   {add A BC ABC}

add_assoc < case H1.
2 subgoal(s).

  Variables: A, B, C, AB, BC, ABC
  IH : forall A B C AB BC ABC, {add A B AB}* -> {add AB C ABC} ->
         {add B C BC} -> {add A BC ABC}
  H2 : {add AB C ABC}
  H3 : {add AB C BC}
  ============================
   {add z BC ABC}

subgoal 2 is:
 {add (s A1) BC ABC}

add_assoc < apply add_det to H2 H3.
2 subgoal(s).

  Variables: A, B, C, AB, BC, ABC
  IH : forall A B C AB BC ABC, {add A B AB}* -> {add AB C ABC} ->
         {add B C BC} -> {add A BC ABC}
  H2 : {add AB C BC}
  H3 : {add AB C BC}
  ============================
   {add z BC BC}

subgoal 2 is:
 {add (s A1) BC ABC}

add_assoc < search.
1 subgoal(s).

  Variables: A, B, C, AB, BC, ABC, C1, A1
  IH : forall A B C AB BC ABC, {add A B AB}* -> {add AB C ABC} ->
         {add B C BC} -> {add A BC ABC}
  H2 : {add (s C1) C ABC}
  H3 : {add B C BC}
  H4 : {add A1 B C1}*
  ============================
   {add (s A1) BC ABC}

add_assoc < case H2.
1 subgoal(s).

  Variables: A, B, C, AB, BC, ABC, C1, A1, C2
  IH : forall A B C AB BC ABC, {add A B AB}* -> {add AB C ABC} ->
         {add B C BC} -> {add A BC ABC}
  H3 : {add B C BC}
  H4 : {add A1 B C1}*
  H5 : {add C1 C C2}
  ============================
   {add (s A1) BC (s C2)}

add_assoc < apply IH to H4 H5 H3.
1 subgoal(s).

  Variables: A, B, C, AB, BC, ABC, C1, A1, C2
  IH : forall A B C AB BC ABC, {add A B AB}* -> {add AB C ABC} ->
         {add B C BC} -> {add A BC ABC}
  H3 : {add B C BC}
  H4 : {add A1 B C1}*
  H5 : {add C1 C C2}
  H6 : {add A1 BC C2}
  ============================
   {add (s A1) BC (s C2)}

add_assoc < search.
Proof completed.
Abella < Goodbye.