Welcome to Abella 1.1.3-dev2 Reading clauses from nd-to-seq.mod
Abella < Define convert nil nil.
Abella < Define convert (nd G :: L) (hyp G :: K) := convert L K.
Abella < Theorem convert_member : 
forall L K H, convert L K -> member (nd H) L -> member (hyp H) K.
1 subgoal(s).

  
  ============================
   forall L K H, convert L K -> member (nd H) L -> member (hyp H) K

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

  
  IH : forall L K H, convert L K -> member (nd H) L * -> member (hyp H) K
  ============================
   forall L K H, convert L K -> member (nd H) L @ -> member (hyp H) K

convert_member < intros.
1 subgoal(s).

  Variables: L, K, H
  IH : forall L K H, convert L K -> member (nd H) L * -> member (hyp H) K
  H1 : convert L K
  H2 : member (nd H) L @
  ============================
   member (hyp H) K

convert_member < case H2.
2 subgoal(s).

  Variables: L, K, H, L1
  IH : forall L K H, convert L K -> member (nd H) L * -> member (hyp H) K
  H1 : convert (nd H :: L1) K
  ============================
   member (hyp H) K

subgoal 2 is:
 member (hyp H) K

convert_member < case H1.
2 subgoal(s).

  Variables: L, K, H, L1, K1
  IH : forall L K H, convert L K -> member (nd H) L * -> member (hyp H) K
  H3 : convert L1 K1
  ============================
   member (hyp H) (hyp H :: K1)

subgoal 2 is:
 member (hyp H) K

convert_member < search.
1 subgoal(s).

  Variables: L, K, H, L1, B
  IH : forall L K H, convert L K -> member (nd H) L * -> member (hyp H) K
  H1 : convert (B :: L1) K
  H3 : member (nd H) L1 *
  ============================
   member (hyp H) K

convert_member < case H1.
1 subgoal(s).

  Variables: L, K, H, L1, B, K1, G
  IH : forall L K H, convert L K -> member (nd H) L * -> member (hyp H) K
  H3 : member (nd H) L1 *
  H4 : convert L1 K1
  ============================
   member (hyp H) (hyp G :: K1)

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

  Variables: L, K, H, L1, B, K1, G
  IH : forall L K H, convert L K -> member (nd H) L * -> member (hyp H) K
  H3 : member (nd H) L1 *
  H4 : convert L1 K1
  H5 : member (hyp H) K1
  ============================
   member (hyp H) (hyp G :: K1)

convert_member < search.
Proof completed.
Abella < Theorem nd_to_seq_ext : 
forall L K G, {L |- nd G} -> convert L K -> {K |- conc G}.
1 subgoal(s).

  
  ============================
   forall L K G, {L |- nd G} -> convert L K -> {K |- conc G}

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

  
  IH : forall L K G, {L |- nd G}* -> convert L K -> {K |- conc G}
  ============================
   forall L K G, {L |- nd G}@ -> convert L K -> {K |- conc G}

nd_to_seq_ext < intros.
1 subgoal(s).

  Variables: L, K, G
  IH : forall L K G, {L |- nd G}* -> convert L K -> {K |- conc G}
  H1 : {L |- nd G}@
  H2 : convert L K
  ============================
   {K |- conc G}

nd_to_seq_ext < case H1.
3 subgoal(s).

  Variables: L, K, G
  IH : forall L K G, {L |- nd G}* -> convert L K -> {K |- conc G}
  H2 : convert L K
  H3 : member (nd G) L
  ============================
   {K |- conc G}

subgoal 2 is:
 {K |- conc (imp A B)}

subgoal 3 is:
 {K |- conc G}

nd_to_seq_ext < apply convert_member to H2 H3.
3 subgoal(s).

  Variables: L, K, G
  IH : forall L K G, {L |- nd G}* -> convert L K -> {K |- conc G}
  H2 : convert L K
  H3 : member (nd G) L
  H4 : member (hyp G) K
  ============================
   {K |- conc G}

subgoal 2 is:
 {K |- conc (imp A B)}

subgoal 3 is:
 {K |- conc G}

nd_to_seq_ext < search.
2 subgoal(s).

  Variables: L, K, G, B, A
  IH : forall L K G, {L |- nd G}* -> convert L K -> {K |- conc G}
  H2 : convert L K
  H3 : {L, nd A |- nd B}*
  ============================
   {K |- conc (imp A B)}

subgoal 2 is:
 {K |- conc G}

nd_to_seq_ext < apply IH to H3 _.
2 subgoal(s).

  Variables: L, K, G, B, A
  IH : forall L K G, {L |- nd G}* -> convert L K -> {K |- conc G}
  H2 : convert L K
  H3 : {L, nd A |- nd B}*
  H4 : {K, hyp A |- conc B}
  ============================
   {K |- conc (imp A B)}

subgoal 2 is:
 {K |- conc G}

nd_to_seq_ext < search.
1 subgoal(s).

  Variables: L, K, G, A
  IH : forall L K G, {L |- nd G}* -> convert L K -> {K |- conc G}
  H2 : convert L K
  H3 : {L |- nd (imp A G)}*
  H4 : {L |- nd A}*
  ============================
   {K |- conc G}

nd_to_seq_ext < apply IH to H3 H2.
1 subgoal(s).

  Variables: L, K, G, A
  IH : forall L K G, {L |- nd G}* -> convert L K -> {K |- conc G}
  H2 : convert L K
  H3 : {L |- nd (imp A G)}*
  H4 : {L |- nd A}*
  H5 : {K |- conc (imp A G)}
  ============================
   {K |- conc G}

nd_to_seq_ext < apply IH to H4 H2.
1 subgoal(s).

  Variables: L, K, G, A
  IH : forall L K G, {L |- nd G}* -> convert L K -> {K |- conc G}
  H2 : convert L K
  H3 : {L |- nd (imp A G)}*
  H4 : {L |- nd A}*
  H5 : {K |- conc (imp A G)}
  H6 : {K |- conc A}
  ============================
   {K |- conc G}

nd_to_seq_ext < search.
Proof completed.
Abella < Theorem nd_to_seq : 
forall G, {nd G} -> {conc G}.
1 subgoal(s).

  
  ============================
   forall G, {nd G} -> {conc G}

nd_to_seq < intros.
1 subgoal(s).

  Variables: G
  H1 : {nd G}
  ============================
   {conc G}

nd_to_seq < apply nd_to_seq_ext to H1 _.
1 subgoal(s).

  Variables: G
  H1 : {nd G}
  H2 : {conc G}
  ============================
   {conc G}

nd_to_seq < search.
Proof completed.
Abella < Goodbye.