Welcome to Abella 1.1.3-dev2 Reading clauses from cr.mod
Abella < Define ctxs nil nil nil.
Abella < Define nabla x, ctxs (trm x :: L) (pr1 x x :: K) (cd1 x x :: notabs x :: J) := ctxs L K J.
Abella < Define nabla x, name x.
Abella < Theorem trm_worlds : 
forall A L K J, ctxs L K J -> member (trm A) L -> name A /\
  member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J.
1 subgoal(s).

  
  ============================
   forall A L K J, ctxs L K J -> member (trm A) L -> name A /\
     member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J

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

  
  IH : forall A L K J, ctxs L K J -> member (trm A) L * -> name A /\
         member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J
  ============================
   forall A L K J, ctxs L K J -> member (trm A) L @ -> name A /\
     member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J

trm_worlds < intros.
1 subgoal(s).

  Variables: A, L, K, J
  IH : forall A L K J, ctxs L K J -> member (trm A) L * -> name A /\
         member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J
  H1 : ctxs L K J
  H2 : member (trm A) L @
  ============================
   name A /\ member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J

trm_worlds < case H2.
2 subgoal(s).

  Variables: A, L, K, J, L1
  IH : forall A L K J, ctxs L K J -> member (trm A) L * -> name A /\
         member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J
  H1 : ctxs (trm A :: L1) K J
  ============================
   name A /\ member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J

subgoal 2 is:
 name A /\ member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J

trm_worlds < case H1.
2 subgoal(s).

  Variables: A, L, K, J, L1, J1, K1, L2
  IH : forall A L K J, ctxs L K J -> member (trm A) L * -> name A /\
         member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J
  H3 : ctxs L2 K1 J1
  ============================
   name n1 /\ member (pr1 n1 n1) (pr1 n1 n1 :: K1) /\
     member (cd1 n1 n1) (cd1 n1 n1 :: notabs n1 :: J1) /\
     member (notabs n1) (cd1 n1 n1 :: notabs n1 :: J1)

subgoal 2 is:
 name A /\ member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J

trm_worlds < search.
1 subgoal(s).

  Variables: A, L, K, J, L1, B
  IH : forall A L K J, ctxs L K J -> member (trm A) L * -> name A /\
         member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J
  H1 : ctxs (B :: L1) K J
  H3 : member (trm A) L1 *
  ============================
   name A /\ member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J

trm_worlds < case H1.
1 subgoal(s).

  Variables: A, L, K, J, L1, B, J1, K1, L2
  IH : forall A L K J, ctxs L K J -> member (trm A) L * -> name A /\
         member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J
  H3 : member (trm (A n1)) L2 *
  H4 : ctxs L2 K1 J1
  ============================
   name (A n1) /\ member (pr1 (A n1) (A n1)) (pr1 n1 n1 :: K1) /\
     member (cd1 (A n1) (A n1)) (cd1 n1 n1 :: notabs n1 :: J1) /\
     member (notabs (A n1)) (cd1 n1 n1 :: notabs n1 :: J1)

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

  Variables: A, L, K, J, L1, B, J1, K1, L2
  IH : forall A L K J, ctxs L K J -> member (trm A) L * -> name A /\
         member (pr1 A A) K /\ member (cd1 A A) J /\ member (notabs A) J
  H3 : member (trm (A n1)) L2 *
  H4 : ctxs L2 K1 J1
  H5 : name (A n1)
  H6 : member (pr1 (A n1) (A n1)) K1
  H7 : member (cd1 (A n1) (A n1)) J1
  H8 : member (notabs (A n1)) J1
  ============================
   name (A n1) /\ member (pr1 (A n1) (A n1)) (pr1 n1 n1 :: K1) /\
     member (cd1 (A n1) (A n1)) (cd1 n1 n1 :: notabs n1 :: J1) /\
     member (notabs (A n1)) (cd1 n1 n1 :: notabs n1 :: J1)

trm_worlds < search.
Proof completed.
Abella < Theorem pr1_worlds : 
forall A B L K J, ctxs L K J -> member (pr1 A B) K -> name A /\ A = B /\
  member (trm A) L /\ member (cd1 A B) J /\ member (notabs A) J.
1 subgoal(s).

  
  ============================
   forall A B L K J, ctxs L K J -> member (pr1 A B) K -> name A /\ A = B /\
     member (trm A) L /\ member (cd1 A B) J /\ member (notabs A) J

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

  
  IH : forall A B L K J, ctxs L K J -> member (pr1 A B) K * -> name A /\
         A = B /\ member (trm A) L /\ member (cd1 A B) J /\
         member (notabs A) J
  ============================
   forall A B L K J, ctxs L K J -> member (pr1 A B) K @ -> name A /\ A = B /\
     member (trm A) L /\ member (cd1 A B) J /\ member (notabs A) J

pr1_worlds < intros.
1 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> member (pr1 A B) K * -> name A /\
         A = B /\ member (trm A) L /\ member (cd1 A B) J /\
         member (notabs A) J
  H1 : ctxs L K J
  H2 : member (pr1 A B) K @
  ============================
   name A /\ A = B /\ member (trm A) L /\ member (cd1 A B) J /\
     member (notabs A) J

pr1_worlds < case H2.
2 subgoal(s).

  Variables: A, B, L, K, J, L1
  IH : forall A B L K J, ctxs L K J -> member (pr1 A B) K * -> name A /\
         A = B /\ member (trm A) L /\ member (cd1 A B) J /\
         member (notabs A) J
  H1 : ctxs L (pr1 A B :: L1) J
  ============================
   name A /\ A = B /\ member (trm A) L /\ member (cd1 A B) J /\
     member (notabs A) J

subgoal 2 is:
 name A /\ A = B /\ member (trm A) L /\ member (cd1 A B) J /\
   member (notabs A) J

pr1_worlds < case H1.
2 subgoal(s).

  Variables: A, B, L, K, J, L1, J1, K1, L2
  IH : forall A B L K J, ctxs L K J -> member (pr1 A B) K * -> name A /\
         A = B /\ member (trm A) L /\ member (cd1 A B) J /\
         member (notabs A) J
  H3 : ctxs L2 K1 J1
  ============================
   name n1 /\ n1 = n1 /\ member (trm n1) (trm n1 :: L2) /\
     member (cd1 n1 n1) (cd1 n1 n1 :: notabs n1 :: J1) /\
     member (notabs n1) (cd1 n1 n1 :: notabs n1 :: J1)

subgoal 2 is:
 name A /\ A = B /\ member (trm A) L /\ member (cd1 A B) J /\
   member (notabs A) J

pr1_worlds < search.
1 subgoal(s).

  Variables: A, B, L, K, J, L1, B1
  IH : forall A B L K J, ctxs L K J -> member (pr1 A B) K * -> name A /\
         A = B /\ member (trm A) L /\ member (cd1 A B) J /\
         member (notabs A) J
  H1 : ctxs L (B1 :: L1) J
  H3 : member (pr1 A B) L1 *
  ============================
   name A /\ A = B /\ member (trm A) L /\ member (cd1 A B) J /\
     member (notabs A) J

pr1_worlds < case H1.
1 subgoal(s).

  Variables: A, B, L, K, J, L1, B1, J1, K1, L2
  IH : forall A B L K J, ctxs L K J -> member (pr1 A B) K * -> name A /\
         A = B /\ member (trm A) L /\ member (cd1 A B) J /\
         member (notabs A) J
  H3 : member (pr1 (A n1) (B n1)) K1 *
  H4 : ctxs L2 K1 J1
  ============================
   name (A n1) /\ A n1 = B n1 /\ member (trm (A n1)) (trm n1 :: L2) /\
     member (cd1 (A n1) (B n1)) (cd1 n1 n1 :: notabs n1 :: J1) /\
     member (notabs (A n1)) (cd1 n1 n1 :: notabs n1 :: J1)

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

  Variables: A, B, L, K, J, L1, B1, J1, K1, L2
  IH : forall A B L K J, ctxs L K J -> member (pr1 A B) K * -> name A /\
         A = B /\ member (trm A) L /\ member (cd1 A B) J /\
         member (notabs A) J
  H3 : member (pr1 (B n1) (B n1)) K1 *
  H4 : ctxs L2 K1 J1
  H5 : name (B n1)
  H6 : member (trm (B n1)) L2
  H7 : member (cd1 (B n1) (B n1)) J1
  H8 : member (notabs (B n1)) J1
  ============================
   name (B n1) /\ B n1 = B n1 /\ member (trm (B n1)) (trm n1 :: L2) /\
     member (cd1 (B n1) (B n1)) (cd1 n1 n1 :: notabs n1 :: J1) /\
     member (notabs (B n1)) (cd1 n1 n1 :: notabs n1 :: J1)

pr1_worlds < search.
Proof completed.
Abella < Theorem cd1_worlds : 
forall A B L K J, ctxs L K J -> member (cd1 A B) J -> name A /\ A = B /\
  member (trm A) L /\ member (pr1 A A) K /\ member (notabs A) J.
1 subgoal(s).

  
  ============================
   forall A B L K J, ctxs L K J -> member (cd1 A B) J -> name A /\ A = B /\
     member (trm A) L /\ member (pr1 A A) K /\ member (notabs A) J

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

  
  IH : forall A B L K J, ctxs L K J -> member (cd1 A B) J * -> name A /\
         A = B /\ member (trm A) L /\ member (pr1 A A) K /\
         member (notabs A) J
  ============================
   forall A B L K J, ctxs L K J -> member (cd1 A B) J @ -> name A /\ A = B /\
     member (trm A) L /\ member (pr1 A A) K /\ member (notabs A) J

cd1_worlds < intros.
1 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> member (cd1 A B) J * -> name A /\
         A = B /\ member (trm A) L /\ member (pr1 A A) K /\
         member (notabs A) J
  H1 : ctxs L K J
  H2 : member (cd1 A B) J @
  ============================
   name A /\ A = B /\ member (trm A) L /\ member (pr1 A A) K /\
     member (notabs A) J

cd1_worlds < case H2.
2 subgoal(s).

  Variables: A, B, L, K, J, L1
  IH : forall A B L K J, ctxs L K J -> member (cd1 A B) J * -> name A /\
         A = B /\ member (trm A) L /\ member (pr1 A A) K /\
         member (notabs A) J
  H1 : ctxs L K (cd1 A B :: L1)
  ============================
   name A /\ A = B /\ member (trm A) L /\ member (pr1 A A) K /\
     member (notabs A) (cd1 A B :: L1)

subgoal 2 is:
 name A /\ A = B /\ member (trm A) L /\ member (pr1 A A) K /\
   member (notabs A) (B1 :: L1)

cd1_worlds < case H1.
2 subgoal(s).

  Variables: A, B, L, K, J, L1, J1, K1, L2
  IH : forall A B L K J, ctxs L K J -> member (cd1 A B) J * -> name A /\
         A = B /\ member (trm A) L /\ member (pr1 A A) K /\
         member (notabs A) J
  H3 : ctxs L2 K1 J1
  ============================
   name n1 /\ n1 = n1 /\ member (trm n1) (trm n1 :: L2) /\
     member (pr1 n1 n1) (pr1 n1 n1 :: K1) /\
     member (notabs n1) (cd1 n1 n1 :: notabs n1 :: J1)

subgoal 2 is:
 name A /\ A = B /\ member (trm A) L /\ member (pr1 A A) K /\
   member (notabs A) (B1 :: L1)

cd1_worlds < search.
1 subgoal(s).

  Variables: A, B, L, K, J, L1, B1
  IH : forall A B L K J, ctxs L K J -> member (cd1 A B) J * -> name A /\
         A = B /\ member (trm A) L /\ member (pr1 A A) K /\
         member (notabs A) J
  H1 : ctxs L K (B1 :: L1)
  H3 : member (cd1 A B) L1 *
  ============================
   name A /\ A = B /\ member (trm A) L /\ member (pr1 A A) K /\
     member (notabs A) (B1 :: L1)

cd1_worlds < case H1.
1 subgoal(s).

  Variables: A, B, L, K, J, L1, B1, J1, K1, L2
  IH : forall A B L K J, ctxs L K J -> member (cd1 A B) J * -> name A /\
         A = B /\ member (trm A) L /\ member (pr1 A A) K /\
         member (notabs A) J
  H3 : member (cd1 (A n1) (B n1)) (notabs n1 :: J1) *
  H4 : ctxs L2 K1 J1
  ============================
   name (A n1) /\ A n1 = B n1 /\ member (trm (A n1)) (trm n1 :: L2) /\
     member (pr1 (A n1) (A n1)) (pr1 n1 n1 :: K1) /\
     member (notabs (A n1)) (cd1 n1 n1 :: notabs n1 :: J1)

cd1_worlds < case H3.
1 subgoal(s).

  Variables: A, B, L, K, J, L1, B1, J1, K1, L2
  IH : forall A B L K J, ctxs L K J -> member (cd1 A B) J * -> name A /\
         A = B /\ member (trm A) L /\ member (pr1 A A) K /\
         member (notabs A) J
  H4 : ctxs L2 K1 J1
  H5 : member (cd1 (A n1) (B n1)) J1 *
  ============================
   name (A n1) /\ A n1 = B n1 /\ member (trm (A n1)) (trm n1 :: L2) /\
     member (pr1 (A n1) (A n1)) (pr1 n1 n1 :: K1) /\
     member (notabs (A n1)) (cd1 n1 n1 :: notabs n1 :: J1)

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

  Variables: A, B, L, K, J, L1, B1, J1, K1, L2
  IH : forall A B L K J, ctxs L K J -> member (cd1 A B) J * -> name A /\
         A = B /\ member (trm A) L /\ member (pr1 A A) K /\
         member (notabs A) J
  H4 : ctxs L2 K1 J1
  H5 : member (cd1 (B n1) (B n1)) J1 *
  H6 : name (B n1)
  H7 : member (trm (B n1)) L2
  H8 : member (pr1 (B n1) (B n1)) K1
  H9 : member (notabs (B n1)) J1
  ============================
   name (B n1) /\ B n1 = B n1 /\ member (trm (B n1)) (trm n1 :: L2) /\
     member (pr1 (B n1) (B n1)) (pr1 n1 n1 :: K1) /\
     member (notabs (B n1)) (cd1 n1 n1 :: notabs n1 :: J1)

cd1_worlds < search.
Proof completed.
Abella < Theorem notabs_worlds : 
forall A L K J, ctxs L K J -> member (notabs A) J -> name A /\
  member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J.
1 subgoal(s).

  
  ============================
   forall A L K J, ctxs L K J -> member (notabs A) J -> name A /\
     member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J

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

  
  IH : forall A L K J, ctxs L K J -> member (notabs A) J * -> name A /\
         member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J
  ============================
   forall A L K J, ctxs L K J -> member (notabs A) J @ -> name A /\
     member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J

notabs_worlds < intros.
1 subgoal(s).

  Variables: A, L, K, J
  IH : forall A L K J, ctxs L K J -> member (notabs A) J * -> name A /\
         member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J
  H1 : ctxs L K J
  H2 : member (notabs A) J @
  ============================
   name A /\ member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J

notabs_worlds < case H2.
2 subgoal(s).

  Variables: A, L, K, J, L1
  IH : forall A L K J, ctxs L K J -> member (notabs A) J * -> name A /\
         member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J
  H1 : ctxs L K (notabs A :: L1)
  ============================
   name A /\ member (trm A) L /\ member (pr1 A A) K /\
     member (cd1 A A) (notabs A :: L1)

subgoal 2 is:
 name A /\ member (trm A) L /\ member (pr1 A A) K /\
   member (cd1 A A) (B :: L1)

notabs_worlds < case H1.
1 subgoal(s).

  Variables: A, L, K, J, L1, B
  IH : forall A L K J, ctxs L K J -> member (notabs A) J * -> name A /\
         member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J
  H1 : ctxs L K (B :: L1)
  H3 : member (notabs A) L1 *
  ============================
   name A /\ member (trm A) L /\ member (pr1 A A) K /\
     member (cd1 A A) (B :: L1)

notabs_worlds < case H1.
1 subgoal(s).

  Variables: A, L, K, J, L1, B, J1, K1, L2
  IH : forall A L K J, ctxs L K J -> member (notabs A) J * -> name A /\
         member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J
  H3 : member (notabs (A n1)) (notabs n1 :: J1) *
  H4 : ctxs L2 K1 J1
  ============================
   name (A n1) /\ member (trm (A n1)) (trm n1 :: L2) /\
     member (pr1 (A n1) (A n1)) (pr1 n1 n1 :: K1) /\
     member (cd1 (A n1) (A n1)) (cd1 n1 n1 :: notabs n1 :: J1)

notabs_worlds < case H3.
2 subgoal(s).

  Variables: A, L, K, J, L1, B, J1, K1, L2
  IH : forall A L K J, ctxs L K J -> member (notabs A) J * -> name A /\
         member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J
  H4 : ctxs L2 K1 J1
  ============================
   name n1 /\ member (trm n1) (trm n1 :: L2) /\
     member (pr1 n1 n1) (pr1 n1 n1 :: K1) /\
     member (cd1 n1 n1) (cd1 n1 n1 :: notabs n1 :: J1)

subgoal 2 is:
 name (A n1) /\ member (trm (A n1)) (trm n1 :: L2) /\
   member (pr1 (A n1) (A n1)) (pr1 n1 n1 :: K1) /\
   member (cd1 (A n1) (A n1)) (cd1 n1 n1 :: notabs n1 :: J1)

notabs_worlds < search.
1 subgoal(s).

  Variables: A, L, K, J, L1, B, J1, K1, L2
  IH : forall A L K J, ctxs L K J -> member (notabs A) J * -> name A /\
         member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J
  H4 : ctxs L2 K1 J1
  H5 : member (notabs (A n1)) J1 *
  ============================
   name (A n1) /\ member (trm (A n1)) (trm n1 :: L2) /\
     member (pr1 (A n1) (A n1)) (pr1 n1 n1 :: K1) /\
     member (cd1 (A n1) (A n1)) (cd1 n1 n1 :: notabs n1 :: J1)

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

  Variables: A, L, K, J, L1, B, J1, K1, L2
  IH : forall A L K J, ctxs L K J -> member (notabs A) J * -> name A /\
         member (trm A) L /\ member (pr1 A A) K /\ member (cd1 A A) J
  H4 : ctxs L2 K1 J1
  H5 : member (notabs (A n1)) J1 *
  H6 : name (A n1)
  H7 : member (trm (A n1)) L2
  H8 : member (pr1 (A n1) (A n1)) K1
  H9 : member (cd1 (A n1) (A n1)) J1
  ============================
   name (A n1) /\ member (trm (A n1)) (trm n1 :: L2) /\
     member (pr1 (A n1) (A n1)) (pr1 n1 n1 :: K1) /\
     member (cd1 (A n1) (A n1)) (cd1 n1 n1 :: notabs n1 :: J1)

notabs_worlds < search.
Proof completed.
Abella < Theorem notabs_abs_absurd : 
forall A L K J, ctxs L K J -> {J |- notabs (abs A)} -> false.
1 subgoal(s).

  
  ============================
   forall A L K J, ctxs L K J -> {J |- notabs (abs A)} -> false

notabs_abs_absurd < intros.
1 subgoal(s).

  Variables: A, L, K, J
  H1 : ctxs L K J
  H2 : {J |- notabs (abs A)}
  ============================
   false

notabs_abs_absurd < case H2.
1 subgoal(s).

  Variables: A, L, K, J
  H1 : ctxs L K J
  H3 : member (notabs (abs A)) J
  ============================
   false

notabs_abs_absurd < apply notabs_worlds to H1 H3.
1 subgoal(s).

  Variables: A, L, K, J
  H1 : ctxs L K J
  H3 : member (notabs (abs A)) J
  H4 : name (abs A)
  H5 : member (trm (abs A)) L
  H6 : member (pr1 (abs A) (abs A)) K
  H7 : member (cd1 (abs A) (abs A)) J
  ============================
   false

notabs_abs_absurd < case H4.
Proof completed.
Abella < Theorem cd1_trm : 
forall A B L K J, ctxs L K J -> {J |- cd1 A B} -> {L |- trm A}.
1 subgoal(s).

  
  ============================
   forall A B L K J, ctxs L K J -> {J |- cd1 A B} -> {L |- trm A}

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

  
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  ============================
   forall A B L K J, ctxs L K J -> {J |- cd1 A B}@ -> {L |- trm A}

cd1_trm < intros.
1 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H2 : {J |- cd1 A B}@
  ============================
   {L |- trm A}

cd1_trm < case H2.
4 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : member (cd1 A B) J
  ============================
   {L |- trm A}

subgoal 2 is:
 {L |- trm (app T1 S1)}

subgoal 3 is:
 {L |- trm (abs S1)}

subgoal 4 is:
 {L |- trm (app (abs T1) S1)}

cd1_trm < apply cd1_worlds to H1 H3.
4 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : member (cd1 B B) J
  H4 : name B
  H5 : member (trm B) L
  H6 : member (pr1 B B) K
  H7 : member (notabs B) J
  ============================
   {L |- trm B}

subgoal 2 is:
 {L |- trm (app T1 S1)}

subgoal 3 is:
 {L |- trm (abs S1)}

subgoal 4 is:
 {L |- trm (app (abs T1) S1)}

cd1_trm < search.
3 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {J |- notabs T1}*
  H4 : {J |- cd1 T1 T2}*
  H5 : {J |- cd1 S1 S2}*
  ============================
   {L |- trm (app T1 S1)}

subgoal 2 is:
 {L |- trm (abs S1)}

subgoal 3 is:
 {L |- trm (app (abs T1) S1)}

cd1_trm < apply IH to H1 H4.
3 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {J |- notabs T1}*
  H4 : {J |- cd1 T1 T2}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {L |- trm T1}
  ============================
   {L |- trm (app T1 S1)}

subgoal 2 is:
 {L |- trm (abs S1)}

subgoal 3 is:
 {L |- trm (app (abs T1) S1)}

cd1_trm < apply IH to H1 H5.
3 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {J |- notabs T1}*
  H4 : {J |- cd1 T1 T2}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {L |- trm T1}
  H7 : {L |- trm S1}
  ============================
   {L |- trm (app T1 S1)}

subgoal 2 is:
 {L |- trm (abs S1)}

subgoal 3 is:
 {L |- trm (app (abs T1) S1)}

cd1_trm < search.
2 subgoal(s).

  Variables: A, B, L, K, J, S2, S1
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  ============================
   {L |- trm (abs S1)}

subgoal 2 is:
 {L |- trm (app (abs T1) S1)}

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

  Variables: A, B, L, K, J, S2, S1
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  H4 : {L, trm n1 |- trm (S1 n1)}
  ============================
   {L |- trm (abs S1)}

subgoal 2 is:
 {L |- trm (app (abs T1) S1)}

cd1_trm < search.
1 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {J |- cd1 (abs T1) (abs T2)}*
  H4 : {J |- cd1 S1 S2}*
  ============================
   {L |- trm (app (abs T1) S1)}

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

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {J |- cd1 (abs T1) (abs T2)}*
  H4 : {J |- cd1 S1 S2}*
  H5 : {L |- trm (abs T1)}
  ============================
   {L |- trm (app (abs T1) S1)}

cd1_trm < apply IH to H1 H4.
1 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {J |- cd1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {J |- cd1 (abs T1) (abs T2)}*
  H4 : {J |- cd1 S1 S2}*
  H5 : {L |- trm (abs T1)}
  H6 : {L |- trm S1}
  ============================
   {L |- trm (app (abs T1) S1)}

cd1_trm < search.
Proof completed.
Abella < Theorem pr1_trm : 
forall A B L K J, ctxs L K J -> {K |- pr1 A B} -> {L |- trm A}.
1 subgoal(s).

  
  ============================
   forall A B L K J, ctxs L K J -> {K |- pr1 A B} -> {L |- trm A}

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

  
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  ============================
   forall A B L K J, ctxs L K J -> {K |- pr1 A B}@ -> {L |- trm A}

pr1_trm < intros.
1 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H2 : {K |- pr1 A B}@
  ============================
   {L |- trm A}

pr1_trm < case H2.
4 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : member (pr1 A B) K
  ============================
   {L |- trm A}

subgoal 2 is:
 {L |- trm (app T1 S1)}

subgoal 3 is:
 {L |- trm (abs S1)}

subgoal 4 is:
 {L |- trm (app (abs T1) S1)}

pr1_trm < apply pr1_worlds to H1 H3.
4 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : member (pr1 B B) K
  H4 : name B
  H5 : member (trm B) L
  H6 : member (cd1 B B) J
  H7 : member (notabs B) J
  ============================
   {L |- trm B}

subgoal 2 is:
 {L |- trm (app T1 S1)}

subgoal 3 is:
 {L |- trm (abs S1)}

subgoal 4 is:
 {L |- trm (app (abs T1) S1)}

pr1_trm < search.
3 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {K |- pr1 T1 T2}*
  H4 : {K |- pr1 S1 S2}*
  ============================
   {L |- trm (app T1 S1)}

subgoal 2 is:
 {L |- trm (abs S1)}

subgoal 3 is:
 {L |- trm (app (abs T1) S1)}

pr1_trm < apply IH to H1 H3.
3 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {K |- pr1 T1 T2}*
  H4 : {K |- pr1 S1 S2}*
  H5 : {L |- trm T1}
  ============================
   {L |- trm (app T1 S1)}

subgoal 2 is:
 {L |- trm (abs S1)}

subgoal 3 is:
 {L |- trm (app (abs T1) S1)}

pr1_trm < apply IH to H1 H4.
3 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {K |- pr1 T1 T2}*
  H4 : {K |- pr1 S1 S2}*
  H5 : {L |- trm T1}
  H6 : {L |- trm S1}
  ============================
   {L |- trm (app T1 S1)}

subgoal 2 is:
 {L |- trm (abs S1)}

subgoal 3 is:
 {L |- trm (app (abs T1) S1)}

pr1_trm < search.
2 subgoal(s).

  Variables: A, B, L, K, J, S2, S1
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S2 n1)}*
  ============================
   {L |- trm (abs S1)}

subgoal 2 is:
 {L |- trm (app (abs T1) S1)}

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

  Variables: A, B, L, K, J, S2, S1
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S2 n1)}*
  H4 : {L, trm n1 |- trm (S1 n1)}
  ============================
   {L |- trm (abs S1)}

subgoal 2 is:
 {L |- trm (app (abs T1) S1)}

pr1_trm < search.
1 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {K |- pr1 (abs T1) (abs T2)}*
  H4 : {K |- pr1 S1 S2}*
  ============================
   {L |- trm (app (abs T1) S1)}

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

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {K |- pr1 (abs T1) (abs T2)}*
  H4 : {K |- pr1 S1 S2}*
  H5 : {L |- trm (abs T1)}
  ============================
   {L |- trm (app (abs T1) S1)}

pr1_trm < apply IH to H1 H4.
1 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {K |- pr1 A B}* -> {L |- trm A}
  H1 : ctxs L K J
  H3 : {K |- pr1 (abs T1) (abs T2)}*
  H4 : {K |- pr1 S1 S2}*
  H5 : {L |- trm (abs T1)}
  H6 : {L |- trm S1}
  ============================
   {L |- trm (app (abs T1) S1)}

pr1_trm < search.
Proof completed.
Abella < Theorem pre_cd1_pr1 : 
forall A B L K J, ctxs L K J -> {L |- trm A} -> {J |- cd1 A B} ->
  {K |- pr1 A B}.
1 subgoal(s).

  
  ============================
   forall A B L K J, ctxs L K J -> {L |- trm A} -> {J |- cd1 A B} ->
     {K |- pr1 A B}

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

  
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  ============================
   forall A B L K J, ctxs L K J -> {L |- trm A}@ -> {J |- cd1 A B} ->
     {K |- pr1 A B}

pre_cd1_pr1 < intros.
1 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H2 : {L |- trm A}@
  H3 : {J |- cd1 A B}
  ============================
   {K |- pr1 A B}

pre_cd1_pr1 < case H2.
3 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H3 : {J |- cd1 A B}
  H4 : member (trm A) L
  ============================
   {K |- pr1 A B}

subgoal 2 is:
 {K |- pr1 (app M N) B}

subgoal 3 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < apply trm_worlds to H1 H4.
3 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H3 : {J |- cd1 A B}
  H4 : member (trm A) L
  H5 : name A
  H6 : member (pr1 A A) K
  H7 : member (cd1 A A) J
  H8 : member (notabs A) J
  ============================
   {K |- pr1 A B}

subgoal 2 is:
 {K |- pr1 (app M N) B}

subgoal 3 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < case H3.
6 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : member (trm A) L
  H5 : name A
  H6 : member (pr1 A A) K
  H7 : member (cd1 A A) J
  H8 : member (notabs A) J
  H9 : member (cd1 A B) J
  ============================
   {K |- pr1 A B}

subgoal 2 is:
 {K |- pr1 (app T1 S1) (app T2 S2)}

subgoal 3 is:
 {K |- pr1 (abs S1) (abs S2)}

subgoal 4 is:
 {K |- pr1 (app (abs T1) S1) (T2 S2)}

subgoal 5 is:
 {K |- pr1 (app M N) B}

subgoal 6 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < apply cd1_worlds to H1 H9.
6 subgoal(s).

  Variables: A, B, L, K, J
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : member (trm B) L
  H5 : name B
  H6 : member (pr1 B B) K
  H7 : member (cd1 B B) J
  H8 : member (notabs B) J
  H9 : member (cd1 B B) J
  H10 : name B
  H11 : member (trm B) L
  H12 : member (pr1 B B) K
  H13 : member (notabs B) J
  ============================
   {K |- pr1 B B}

subgoal 2 is:
 {K |- pr1 (app T1 S1) (app T2 S2)}

subgoal 3 is:
 {K |- pr1 (abs S1) (abs S2)}

subgoal 4 is:
 {K |- pr1 (app (abs T1) S1) (T2 S2)}

subgoal 5 is:
 {K |- pr1 (app M N) B}

subgoal 6 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < search.
5 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : member (trm (app T1 S1)) L
  H5 : name (app T1 S1)
  H6 : member (pr1 (app T1 S1) (app T1 S1)) K
  H7 : member (cd1 (app T1 S1) (app T1 S1)) J
  H8 : member (notabs (app T1 S1)) J
  H9 : {J |- notabs T1}
  H10 : {J |- cd1 T1 T2}
  H11 : {J |- cd1 S1 S2}
  ============================
   {K |- pr1 (app T1 S1) (app T2 S2)}

subgoal 2 is:
 {K |- pr1 (abs S1) (abs S2)}

subgoal 3 is:
 {K |- pr1 (app (abs T1) S1) (T2 S2)}

subgoal 4 is:
 {K |- pr1 (app M N) B}

subgoal 5 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < case H5.
4 subgoal(s).

  Variables: A, B, L, K, J, S2, S1
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : member (trm (abs S1)) L
  H5 : name (abs S1)
  H6 : member (pr1 (abs S1) (abs S1)) K
  H7 : member (cd1 (abs S1) (abs S1)) J
  H8 : member (notabs (abs S1)) J
  H9 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}
  ============================
   {K |- pr1 (abs S1) (abs S2)}

subgoal 2 is:
 {K |- pr1 (app (abs T1) S1) (T2 S2)}

subgoal 3 is:
 {K |- pr1 (app M N) B}

subgoal 4 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < case H5.
3 subgoal(s).

  Variables: A, B, L, K, J, S2, T2, S1, T1
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : member (trm (app (abs T1) S1)) L
  H5 : name (app (abs T1) S1)
  H6 : member (pr1 (app (abs T1) S1) (app (abs T1) S1)) K
  H7 : member (cd1 (app (abs T1) S1) (app (abs T1) S1)) J
  H8 : member (notabs (app (abs T1) S1)) J
  H9 : {J |- cd1 (abs T1) (abs T2)}
  H10 : {J |- cd1 S1 S2}
  ============================
   {K |- pr1 (app (abs T1) S1) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (app M N) B}

subgoal 3 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < case H5.
2 subgoal(s).

  Variables: A, B, L, K, J, N, M
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H3 : {J |- cd1 (app M N) B}
  H4 : {L |- trm M}*
  H5 : {L |- trm N}*
  ============================
   {K |- pr1 (app M N) B}

subgoal 2 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < case H3.
4 subgoal(s).

  Variables: A, B, L, K, J, N, M
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L |- trm M}*
  H5 : {L |- trm N}*
  H6 : member (cd1 (app M N) B) J
  ============================
   {K |- pr1 (app M N) B}

subgoal 2 is:
 {K |- pr1 (app M N) (app T2 S2)}

subgoal 3 is:
 {K |- pr1 (app (abs T1) N) (T2 S2)}

subgoal 4 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < apply cd1_worlds to H1 H6.
4 subgoal(s).

  Variables: A, B, L, K, J, N, M
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L |- trm M}*
  H5 : {L |- trm N}*
  H6 : member (cd1 (app M N) (app M N)) J
  H7 : name (app M N)
  H8 : member (trm (app M N)) L
  H9 : member (pr1 (app M N) (app M N)) K
  H10 : member (notabs (app M N)) J
  ============================
   {K |- pr1 (app M N) (app M N)}

subgoal 2 is:
 {K |- pr1 (app M N) (app T2 S2)}

subgoal 3 is:
 {K |- pr1 (app (abs T1) N) (T2 S2)}

subgoal 4 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < case H7.
3 subgoal(s).

  Variables: A, B, L, K, J, N, M, S2, T2
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L |- trm M}*
  H5 : {L |- trm N}*
  H6 : {J |- notabs M}
  H7 : {J |- cd1 M T2}
  H8 : {J |- cd1 N S2}
  ============================
   {K |- pr1 (app M N) (app T2 S2)}

subgoal 2 is:
 {K |- pr1 (app (abs T1) N) (T2 S2)}

subgoal 3 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < apply IH to H1 H4 H7.
3 subgoal(s).

  Variables: A, B, L, K, J, N, M, S2, T2
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L |- trm M}*
  H5 : {L |- trm N}*
  H6 : {J |- notabs M}
  H7 : {J |- cd1 M T2}
  H8 : {J |- cd1 N S2}
  H9 : {K |- pr1 M T2}
  ============================
   {K |- pr1 (app M N) (app T2 S2)}

subgoal 2 is:
 {K |- pr1 (app (abs T1) N) (T2 S2)}

subgoal 3 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < apply IH to H1 H5 H8.
3 subgoal(s).

  Variables: A, B, L, K, J, N, M, S2, T2
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L |- trm M}*
  H5 : {L |- trm N}*
  H6 : {J |- notabs M}
  H7 : {J |- cd1 M T2}
  H8 : {J |- cd1 N S2}
  H9 : {K |- pr1 M T2}
  H10 : {K |- pr1 N S2}
  ============================
   {K |- pr1 (app M N) (app T2 S2)}

subgoal 2 is:
 {K |- pr1 (app (abs T1) N) (T2 S2)}

subgoal 3 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < search.
2 subgoal(s).

  Variables: A, B, L, K, J, N, M, S2, T2, T1
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L |- trm (abs T1)}*
  H5 : {L |- trm N}*
  H6 : {J |- cd1 (abs T1) (abs T2)}
  H7 : {J |- cd1 N S2}
  ============================
   {K |- pr1 (app (abs T1) N) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < apply IH to H1 H4 H6.
2 subgoal(s).

  Variables: A, B, L, K, J, N, M, S2, T2, T1
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L |- trm (abs T1)}*
  H5 : {L |- trm N}*
  H6 : {J |- cd1 (abs T1) (abs T2)}
  H7 : {J |- cd1 N S2}
  H8 : {K |- pr1 (abs T1) (abs T2)}
  ============================
   {K |- pr1 (app (abs T1) N) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < apply IH to H1 H5 H7.
2 subgoal(s).

  Variables: A, B, L, K, J, N, M, S2, T2, T1
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L |- trm (abs T1)}*
  H5 : {L |- trm N}*
  H6 : {J |- cd1 (abs T1) (abs T2)}
  H7 : {J |- cd1 N S2}
  H8 : {K |- pr1 (abs T1) (abs T2)}
  H9 : {K |- pr1 N S2}
  ============================
   {K |- pr1 (app (abs T1) N) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (abs R) B}

pre_cd1_pr1 < search.
1 subgoal(s).

  Variables: A, B, L, K, J, R
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H3 : {J |- cd1 (abs R) B}
  H4 : {L, trm n1 |- trm (R n1)}*
  ============================
   {K |- pr1 (abs R) B}

pre_cd1_pr1 < case H3.
2 subgoal(s).

  Variables: A, B, L, K, J, R
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L, trm n1 |- trm (R n1)}*
  H5 : member (cd1 (abs R) B) J
  ============================
   {K |- pr1 (abs R) B}

subgoal 2 is:
 {K |- pr1 (abs R) (abs S2)}

pre_cd1_pr1 < apply cd1_worlds to H1 H5.
2 subgoal(s).

  Variables: A, B, L, K, J, R
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L, trm n1 |- trm (R n1)}*
  H5 : member (cd1 (abs R) (abs R)) J
  H6 : name (abs R)
  H7 : member (trm (abs R)) L
  H8 : member (pr1 (abs R) (abs R)) K
  H9 : member (notabs (abs R)) J
  ============================
   {K |- pr1 (abs R) (abs R)}

subgoal 2 is:
 {K |- pr1 (abs R) (abs S2)}

pre_cd1_pr1 < case H6.
1 subgoal(s).

  Variables: A, B, L, K, J, R, S2
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L, trm n1 |- trm (R n1)}*
  H5 : {J, notabs n1, cd1 n1 n1 |- cd1 (R n1) (S2 n1)}
  ============================
   {K |- pr1 (abs R) (abs S2)}

pre_cd1_pr1 < apply IH to _ H4 H5.
1 subgoal(s).

  Variables: A, B, L, K, J, R, S2
  IH : forall A B L K J, ctxs L K J -> {L |- trm A}* -> {J |- cd1 A B} ->
         {K |- pr1 A B}
  H1 : ctxs L K J
  H4 : {L, trm n1 |- trm (R n1)}*
  H5 : {J, notabs n1, cd1 n1 n1 |- cd1 (R n1) (S2 n1)}
  H6 : {K, pr1 n1 n1 |- pr1 (R n1) (S2 n1)}
  ============================
   {K |- pr1 (abs R) (abs S2)}

pre_cd1_pr1 < search.
Proof completed.
Abella < Theorem cd1_pr1 : 
forall A B L K J, ctxs L K J -> {J |- cd1 A B} -> {K |- pr1 A B}.
1 subgoal(s).

  
  ============================
   forall A B L K J, ctxs L K J -> {J |- cd1 A B} -> {K |- pr1 A B}

cd1_pr1 < intros.
1 subgoal(s).

  Variables: A, B, L, K, J
  H1 : ctxs L K J
  H2 : {J |- cd1 A B}
  ============================
   {K |- pr1 A B}

cd1_pr1 < apply cd1_trm to H1 H2.
1 subgoal(s).

  Variables: A, B, L, K, J
  H1 : ctxs L K J
  H2 : {J |- cd1 A B}
  H3 : {L |- trm A}
  ============================
   {K |- pr1 A B}

cd1_pr1 < apply pre_cd1_pr1 to H1 H3 H2.
1 subgoal(s).

  Variables: A, B, L, K, J
  H1 : ctxs L K J
  H2 : {J |- cd1 A B}
  H3 : {L |- trm A}
  H4 : {K |- pr1 A B}
  ============================
   {K |- pr1 A B}

cd1_pr1 < search.
Proof completed.
Abella < Theorem pr1_rfl : 
forall A L K J, ctxs L K J -> {L |- trm A} -> {K |- pr1 A A}.
1 subgoal(s).

  
  ============================
   forall A L K J, ctxs L K J -> {L |- trm A} -> {K |- pr1 A A}

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

  
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> {K |- pr1 A A}
  ============================
   forall A L K J, ctxs L K J -> {L |- trm A}@ -> {K |- pr1 A A}

pr1_rfl < intros.
1 subgoal(s).

  Variables: A, L, K, J
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> {K |- pr1 A A}
  H1 : ctxs L K J
  H2 : {L |- trm A}@
  ============================
   {K |- pr1 A A}

pr1_rfl < case H2.
3 subgoal(s).

  Variables: A, L, K, J
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> {K |- pr1 A A}
  H1 : ctxs L K J
  H3 : member (trm A) L
  ============================
   {K |- pr1 A A}

subgoal 2 is:
 {K |- pr1 (app M N) (app M N)}

subgoal 3 is:
 {K |- pr1 (abs R) (abs R)}

pr1_rfl < apply trm_worlds to H1 H3.
3 subgoal(s).

  Variables: A, L, K, J
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> {K |- pr1 A A}
  H1 : ctxs L K J
  H3 : member (trm A) L
  H4 : name A
  H5 : member (pr1 A A) K
  H6 : member (cd1 A A) J
  H7 : member (notabs A) J
  ============================
   {K |- pr1 A A}

subgoal 2 is:
 {K |- pr1 (app M N) (app M N)}

subgoal 3 is:
 {K |- pr1 (abs R) (abs R)}

pr1_rfl < search.
2 subgoal(s).

  Variables: A, L, K, J, N, M
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> {K |- pr1 A A}
  H1 : ctxs L K J
  H3 : {L |- trm M}*
  H4 : {L |- trm N}*
  ============================
   {K |- pr1 (app M N) (app M N)}

subgoal 2 is:
 {K |- pr1 (abs R) (abs R)}

pr1_rfl < apply IH to H1 H3.
2 subgoal(s).

  Variables: A, L, K, J, N, M
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> {K |- pr1 A A}
  H1 : ctxs L K J
  H3 : {L |- trm M}*
  H4 : {L |- trm N}*
  H5 : {K |- pr1 M M}
  ============================
   {K |- pr1 (app M N) (app M N)}

subgoal 2 is:
 {K |- pr1 (abs R) (abs R)}

pr1_rfl < apply IH to H1 H4.
2 subgoal(s).

  Variables: A, L, K, J, N, M
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> {K |- pr1 A A}
  H1 : ctxs L K J
  H3 : {L |- trm M}*
  H4 : {L |- trm N}*
  H5 : {K |- pr1 M M}
  H6 : {K |- pr1 N N}
  ============================
   {K |- pr1 (app M N) (app M N)}

subgoal 2 is:
 {K |- pr1 (abs R) (abs R)}

pr1_rfl < search.
1 subgoal(s).

  Variables: A, L, K, J, R
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> {K |- pr1 A A}
  H1 : ctxs L K J
  H3 : {L, trm n1 |- trm (R n1)}*
  ============================
   {K |- pr1 (abs R) (abs R)}

pr1_rfl < apply IH to _ H3.
1 subgoal(s).

  Variables: A, L, K, J, R
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> {K |- pr1 A A}
  H1 : ctxs L K J
  H3 : {L, trm n1 |- trm (R n1)}*
  H4 : {K, pr1 n1 n1 |- pr1 (R n1) (R n1)}
  ============================
   {K |- pr1 (abs R) (abs R)}

pr1_rfl < search.
Proof completed.
Abella < Theorem cd1_unique : 
forall A B C L K J, ctxs L K J -> {J |- cd1 A B} -> {J |- cd1 A C} -> B = C.
1 subgoal(s).

  
  ============================
   forall A B C L K J, ctxs L K J -> {J |- cd1 A B} -> {J |- cd1 A C} ->
     B = C

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

  
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  ============================
   forall A B C L K J, ctxs L K J -> {J |- cd1 A B}@ -> {J |- cd1 A C} ->
     B = C

cd1_unique < intros.
1 subgoal(s).

  Variables: A, B, C, L, K, J
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H2 : {J |- cd1 A B}@
  H3 : {J |- cd1 A C}
  ============================
   B = C

cd1_unique < case H2.
4 subgoal(s).

  Variables: A, B, C, L, K, J
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H3 : {J |- cd1 A C}
  H4 : member (cd1 A B) J
  ============================
   B = C

subgoal 2 is:
 app T2 S2 = C

subgoal 3 is:
 abs S2 = C

subgoal 4 is:
 T2 S2 = C

cd1_unique < apply cd1_worlds to H1 H4.
4 subgoal(s).

  Variables: A, B, C, L, K, J
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H3 : {J |- cd1 B C}
  H4 : member (cd1 B B) J
  H5 : name B
  H6 : member (trm B) L
  H7 : member (pr1 B B) K
  H8 : member (notabs B) J
  ============================
   B = C

subgoal 2 is:
 app T2 S2 = C

subgoal 3 is:
 abs S2 = C

subgoal 4 is:
 T2 S2 = C

cd1_unique < case H3.
7 subgoal(s).

  Variables: A, B, C, L, K, J
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : member (cd1 B B) J
  H5 : name B
  H6 : member (trm B) L
  H7 : member (pr1 B B) K
  H8 : member (notabs B) J
  H9 : member (cd1 B C) J
  ============================
   B = C

subgoal 2 is:
 app T1 S1 = app T2 S2

subgoal 3 is:
 abs S1 = abs S2

subgoal 4 is:
 app (abs T1) S1 = T2 S2

subgoal 5 is:
 app T2 S2 = C

subgoal 6 is:
 abs S2 = C

subgoal 7 is:
 T2 S2 = C

cd1_unique < apply cd1_worlds to H1 H9.
7 subgoal(s).

  Variables: A, B, C, L, K, J
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : member (cd1 C C) J
  H5 : name C
  H6 : member (trm C) L
  H7 : member (pr1 C C) K
  H8 : member (notabs C) J
  H9 : member (cd1 C C) J
  H10 : name C
  H11 : member (trm C) L
  H12 : member (pr1 C C) K
  H13 : member (notabs C) J
  ============================
   C = C

subgoal 2 is:
 app T1 S1 = app T2 S2

subgoal 3 is:
 abs S1 = abs S2

subgoal 4 is:
 app (abs T1) S1 = T2 S2

subgoal 5 is:
 app T2 S2 = C

subgoal 6 is:
 abs S2 = C

subgoal 7 is:
 T2 S2 = C

cd1_unique < search.
6 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : member (cd1 (app T1 S1) (app T1 S1)) J
  H5 : name (app T1 S1)
  H6 : member (trm (app T1 S1)) L
  H7 : member (pr1 (app T1 S1) (app T1 S1)) K
  H8 : member (notabs (app T1 S1)) J
  H9 : {J |- notabs T1}
  H10 : {J |- cd1 T1 T2}
  H11 : {J |- cd1 S1 S2}
  ============================
   app T1 S1 = app T2 S2

subgoal 2 is:
 abs S1 = abs S2

subgoal 3 is:
 app (abs T1) S1 = T2 S2

subgoal 4 is:
 app T2 S2 = C

subgoal 5 is:
 abs S2 = C

subgoal 6 is:
 T2 S2 = C

cd1_unique < case H5.
5 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : member (cd1 (abs S1) (abs S1)) J
  H5 : name (abs S1)
  H6 : member (trm (abs S1)) L
  H7 : member (pr1 (abs S1) (abs S1)) K
  H8 : member (notabs (abs S1)) J
  H9 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}
  ============================
   abs S1 = abs S2

subgoal 2 is:
 app (abs T1) S1 = T2 S2

subgoal 3 is:
 app T2 S2 = C

subgoal 4 is:
 abs S2 = C

subgoal 5 is:
 T2 S2 = C

cd1_unique < case H5.
4 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : member (cd1 (app (abs T1) S1) (app (abs T1) S1)) J
  H5 : name (app (abs T1) S1)
  H6 : member (trm (app (abs T1) S1)) L
  H7 : member (pr1 (app (abs T1) S1) (app (abs T1) S1)) K
  H8 : member (notabs (app (abs T1) S1)) J
  H9 : {J |- cd1 (abs T1) (abs T2)}
  H10 : {J |- cd1 S1 S2}
  ============================
   app (abs T1) S1 = T2 S2

subgoal 2 is:
 app T2 S2 = C

subgoal 3 is:
 abs S2 = C

subgoal 4 is:
 T2 S2 = C

cd1_unique < case H5.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H3 : {J |- cd1 (app T1 S1) C}
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  ============================
   app T2 S2 = C

subgoal 2 is:
 abs S2 = C

subgoal 3 is:
 T2 S2 = C

cd1_unique < case H3.
5 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : member (cd1 (app T1 S1) C) J
  ============================
   app T2 S2 = C

subgoal 2 is:
 app T2 S2 = app T4 S4

subgoal 3 is:
 app T2 S2 = T4 S4

subgoal 4 is:
 abs S2 = C

subgoal 5 is:
 T2 S2 = C

cd1_unique < apply cd1_worlds to H1 H7.
5 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : member (cd1 (app T1 S1) (app T1 S1)) J
  H8 : name (app T1 S1)
  H9 : member (trm (app T1 S1)) L
  H10 : member (pr1 (app T1 S1) (app T1 S1)) K
  H11 : member (notabs (app T1 S1)) J
  ============================
   app T2 S2 = app T1 S1

subgoal 2 is:
 app T2 S2 = app T4 S4

subgoal 3 is:
 app T2 S2 = T4 S4

subgoal 4 is:
 abs S2 = C

subgoal 5 is:
 T2 S2 = C

cd1_unique < case H8.
4 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : {J |- notabs T1}
  H8 : {J |- cd1 T1 T4}
  H9 : {J |- cd1 S1 S4}
  ============================
   app T2 S2 = app T4 S4

subgoal 2 is:
 app T2 S2 = T4 S4

subgoal 3 is:
 abs S2 = C

subgoal 4 is:
 T2 S2 = C

cd1_unique < apply IH to H1 H5 H8.
4 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T4}*
  H6 : {J |- cd1 S1 S2}*
  H7 : {J |- notabs T1}
  H8 : {J |- cd1 T1 T4}
  H9 : {J |- cd1 S1 S4}
  ============================
   app T4 S2 = app T4 S4

subgoal 2 is:
 app T2 S2 = T4 S4

subgoal 3 is:
 abs S2 = C

subgoal 4 is:
 T2 S2 = C

cd1_unique < apply IH to H1 H6 H9.
4 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T4}*
  H6 : {J |- cd1 S1 S4}*
  H7 : {J |- notabs T1}
  H8 : {J |- cd1 T1 T4}
  H9 : {J |- cd1 S1 S4}
  ============================
   app T4 S4 = app T4 S4

subgoal 2 is:
 app T2 S2 = T4 S4

subgoal 3 is:
 abs S2 = C

subgoal 4 is:
 T2 S2 = C

cd1_unique < search.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4, T3
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- notabs (abs T3)}*
  H5 : {J |- cd1 (abs T3) T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : {J |- cd1 (abs T3) (abs T4)}
  H8 : {J |- cd1 S1 S4}
  ============================
   app T2 S2 = T4 S4

subgoal 2 is:
 abs S2 = C

subgoal 3 is:
 T2 S2 = C

cd1_unique < apply notabs_abs_absurd to H1 H4.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H3 : {J |- cd1 (abs S1) C}
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  ============================
   abs S2 = C

subgoal 2 is:
 T2 S2 = C

cd1_unique < case H3.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  H5 : member (cd1 (abs S1) C) J
  ============================
   abs S2 = C

subgoal 2 is:
 abs S2 = abs S4

subgoal 3 is:
 T2 S2 = C

cd1_unique < apply cd1_worlds to H1 H5.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  H5 : member (cd1 (abs S1) (abs S1)) J
  H6 : name (abs S1)
  H7 : member (trm (abs S1)) L
  H8 : member (pr1 (abs S1) (abs S1)) K
  H9 : member (notabs (abs S1)) J
  ============================
   abs S2 = abs S1

subgoal 2 is:
 abs S2 = abs S4

subgoal 3 is:
 T2 S2 = C

cd1_unique < case H6.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1, S4
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  H5 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S4 n1)}
  ============================
   abs S2 = abs S4

subgoal 2 is:
 T2 S2 = C

cd1_unique < apply IH to _ H4 H5.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1, S4
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S4 n1)}*
  H5 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S4 n1)}
  ============================
   abs (x1\S4 x1) = abs S4

subgoal 2 is:
 T2 S2 = C

cd1_unique < search.
1 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H3 : {J |- cd1 (app (abs T1) S1) C}
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  ============================
   T2 S2 = C

cd1_unique < case H3.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : member (cd1 (app (abs T1) S1) C) J
  ============================
   T2 S2 = C

subgoal 2 is:
 T2 S2 = app T4 S4

subgoal 3 is:
 T2 S2 = T4 S4

cd1_unique < apply cd1_worlds to H1 H6.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : member (cd1 (app (abs T1) S1) (app (abs T1) S1)) J
  H7 : name (app (abs T1) S1)
  H8 : member (trm (app (abs T1) S1)) L
  H9 : member (pr1 (app (abs T1) S1) (app (abs T1) S1)) K
  H10 : member (notabs (app (abs T1) S1)) J
  ============================
   T2 S2 = app (abs T1) S1

subgoal 2 is:
 T2 S2 = app T4 S4

subgoal 3 is:
 T2 S2 = T4 S4

cd1_unique < case H7.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {J |- notabs (abs T1)}
  H7 : {J |- cd1 (abs T1) T4}
  H8 : {J |- cd1 S1 S4}
  ============================
   T2 S2 = app T4 S4

subgoal 2 is:
 T2 S2 = T4 S4

cd1_unique < apply notabs_abs_absurd to H1 H6.
1 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {J |- cd1 (abs T1) (abs T4)}
  H7 : {J |- cd1 S1 S4}
  ============================
   T2 S2 = T4 S4

cd1_unique < apply IH to H1 H4 H6.
1 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T4)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {J |- cd1 (abs T1) (abs T4)}
  H7 : {J |- cd1 S1 S4}
  ============================
   T4 S2 = T4 S4

cd1_unique < apply IH to H1 H5 H7.
1 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {J |- cd1 A B}* -> {J |- cd1 A C} ->
         B = C
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T4)}*
  H5 : {J |- cd1 S1 S4}*
  H6 : {J |- cd1 (abs T1) (abs T4)}
  H7 : {J |- cd1 S1 S4}
  ============================
   T4 S4 = T4 S4

cd1_unique < search.
Proof completed.
Abella < Theorem cd1_exists : 
forall A L K J, ctxs L K J -> {L |- trm A} -> (exists B, {J |- cd1 A B}).
1 subgoal(s).

  
  ============================
   forall A L K J, ctxs L K J -> {L |- trm A} -> (exists B, {J |- cd1 A B})

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

  
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  ============================
   forall A L K J, ctxs L K J -> {L |- trm A}@ -> (exists B, {J |- cd1 A B})

cd1_exists < intros.
1 subgoal(s).

  Variables: A, L, K, J
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H2 : {L |- trm A}@
  ============================
   exists B, {J |- cd1 A B}

cd1_exists < case H2.
3 subgoal(s).

  Variables: A, L, K, J
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H3 : member (trm A) L
  ============================
   exists B, {J |- cd1 A B}

subgoal 2 is:
 exists B, {J |- cd1 (app M N) B}

subgoal 3 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < apply trm_worlds to H1 H3.
3 subgoal(s).

  Variables: A, L, K, J
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H3 : member (trm A) L
  H4 : name A
  H5 : member (pr1 A A) K
  H6 : member (cd1 A A) J
  H7 : member (notabs A) J
  ============================
   exists B, {J |- cd1 A B}

subgoal 2 is:
 exists B, {J |- cd1 (app M N) B}

subgoal 3 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < search.
2 subgoal(s).

  Variables: A, L, K, J, N, M
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H3 : {L |- trm M}*
  H4 : {L |- trm N}*
  ============================
   exists B, {J |- cd1 (app M N) B}

subgoal 2 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < apply IH to H1 H3.
2 subgoal(s).

  Variables: A, L, K, J, N, M, B
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H3 : {L |- trm M}*
  H4 : {L |- trm N}*
  H5 : {J |- cd1 M B}
  ============================
   exists B, {J |- cd1 (app M N) B}

subgoal 2 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < apply IH to H1 H4.
2 subgoal(s).

  Variables: A, L, K, J, N, M, B, B1
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H3 : {L |- trm M}*
  H4 : {L |- trm N}*
  H5 : {J |- cd1 M B}
  H6 : {J |- cd1 N B1}
  ============================
   exists B, {J |- cd1 (app M N) B}

subgoal 2 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < case H3.
4 subgoal(s).

  Variables: A, L, K, J, N, M, B, B1
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H4 : {L |- trm N}*
  H5 : {J |- cd1 M B}
  H6 : {J |- cd1 N B1}
  H7 : member (trm M) L
  ============================
   exists B, {J |- cd1 (app M N) B}

subgoal 2 is:
 exists B, {J |- cd1 (app (app M1 N1) N) B}

subgoal 3 is:
 exists B, {J |- cd1 (app (abs R) N) B}

subgoal 4 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < apply trm_worlds to H1 H7.
4 subgoal(s).

  Variables: A, L, K, J, N, M, B, B1
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H4 : {L |- trm N}*
  H5 : {J |- cd1 M B}
  H6 : {J |- cd1 N B1}
  H7 : member (trm M) L
  H8 : name M
  H9 : member (pr1 M M) K
  H10 : member (cd1 M M) J
  H11 : member (notabs M) J
  ============================
   exists B, {J |- cd1 (app M N) B}

subgoal 2 is:
 exists B, {J |- cd1 (app (app M1 N1) N) B}

subgoal 3 is:
 exists B, {J |- cd1 (app (abs R) N) B}

subgoal 4 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < search.
3 subgoal(s).

  Variables: A, L, K, J, N, M, B, B1, N1, M1
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H4 : {L |- trm N}*
  H5 : {J |- cd1 (app M1 N1) B}
  H6 : {J |- cd1 N B1}
  H7 : {L |- trm M1}*
  H8 : {L |- trm N1}*
  ============================
   exists B, {J |- cd1 (app (app M1 N1) N) B}

subgoal 2 is:
 exists B, {J |- cd1 (app (abs R) N) B}

subgoal 3 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < search.
2 subgoal(s).

  Variables: A, L, K, J, N, M, B, B1, R
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H4 : {L |- trm N}*
  H5 : {J |- cd1 (abs R) B}
  H6 : {J |- cd1 N B1}
  H7 : {L, trm n1 |- trm (R n1)}*
  ============================
   exists B, {J |- cd1 (app (abs R) N) B}

subgoal 2 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < apply IH to _ H7.
2 subgoal(s).

  Variables: A, L, K, J, N, M, B, B1, R, B2
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H4 : {L |- trm N}*
  H5 : {J |- cd1 (abs R) B}
  H6 : {J |- cd1 N B1}
  H7 : {L, trm n1 |- trm (R n1)}*
  H8 : {J, notabs n1, cd1 n1 n1 |- cd1 (R n1) (B2 n1)}
  ============================
   exists B, {J |- cd1 (app (abs R) N) B}

subgoal 2 is:
 exists B, {J |- cd1 (abs R) B}

cd1_exists < search.
1 subgoal(s).

  Variables: A, L, K, J, R
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H3 : {L, trm n1 |- trm (R n1)}*
  ============================
   exists B, {J |- cd1 (abs R) B}

cd1_exists < apply IH to _ H3.
1 subgoal(s).

  Variables: A, L, K, J, R, B
  IH : forall A L K J, ctxs L K J -> {L |- trm A}* -> (exists B,
         {J |- cd1 A B})
  H1 : ctxs L K J
  H3 : {L, trm n1 |- trm (R n1)}*
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (R n1) (B n1)}
  ============================
   exists B, {J |- cd1 (abs R) B}

cd1_exists < search.
Proof completed.
Abella < Theorem pr1_name : 
forall A B L K J, ctxs L K J -> {K |- pr1 A B} -> name A -> B = A.
1 subgoal(s).

  
  ============================
   forall A B L K J, ctxs L K J -> {K |- pr1 A B} -> name A -> B = A

pr1_name < intros.
1 subgoal(s).

  Variables: A, B, L, K, J
  H1 : ctxs L K J
  H2 : {K |- pr1 A B}
  H3 : name A
  ============================
   B = A

pr1_name < case H3.
1 subgoal(s).

  Variables: A, B, L, K, J
  H1 : ctxs (L n1) (K n1) (J n1)
  H2 : {K n1 |- pr1 n1 (B n1)}
  ============================
   B n1 = n1

pr1_name < case H2.
1 subgoal(s).

  Variables: A, B, L, K, J
  H1 : ctxs (L n1) (K n1) (J n1)
  H4 : member (pr1 n1 (B n1)) (K n1)
  ============================
   B n1 = n1

pr1_name < apply pr1_worlds to H1 H4.
1 subgoal(s).

  Variables: A, B, L, K, J
  H1 : ctxs (L n1) (K n1) (J n1)
  H4 : member (pr1 n1 n1) (K n1)
  H5 : name n1
  H6 : member (trm n1) (L n1)
  H7 : member (cd1 n1 n1) (J n1)
  H8 : member (notabs n1) (J n1)
  ============================
   n1 = n1

pr1_name < search.
Proof completed.
Abella < Theorem pr1_abs : 
forall A R B L K J, ctxs L K J -> {K |- pr1 (abs R) B} -> (exists S,
  B = abs S).
1 subgoal(s).

  
  ============================
   forall A R B L K J, ctxs L K J -> {K |- pr1 (abs R) B} -> (exists S,
     B = abs S)

pr1_abs < intros.
1 subgoal(s).

  Variables: A, R, B, L, K, J
  H1 : ctxs L K J
  H2 : {K |- pr1 (abs R) B}
  ============================
   exists S, B = abs S

pr1_abs < case H2.
2 subgoal(s).

  Variables: A, R, B, L, K, J
  H1 : ctxs L K J
  H3 : member (pr1 (abs R) B) K
  ============================
   exists S, B = abs S

subgoal 2 is:
 exists S, abs S2 = abs S

pr1_abs < apply pr1_worlds to H1 H3.
2 subgoal(s).

  Variables: A, R, B, L, K, J
  H1 : ctxs L K J
  H3 : member (pr1 (abs R) (abs R)) K
  H4 : name (abs R)
  H5 : member (trm (abs R)) L
  H6 : member (cd1 (abs R) (abs R)) J
  H7 : member (notabs (abs R)) J
  ============================
   exists S, abs R = abs S

subgoal 2 is:
 exists S, abs S2 = abs S

pr1_abs < case H4.
1 subgoal(s).

  Variables: A, R, B, L, K, J, S2
  H1 : ctxs L K J
  H3 : {K, pr1 n1 n1 |- pr1 (R n1) (S2 n1)}
  ============================
   exists S, abs S2 = abs S

pr1_abs < search.
Proof completed.
Abella < Theorem pre_pr1_subst_lem : 
forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
  {K, pr1 x x |- pr1 (A1 x) (A2 x)} -> {K |- pr1 B1 B2} ->
  {K |- pr1 (A1 B1) (A2 B2)}.
1 subgoal(s).

  
  ============================
   forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
     {K, pr1 x x |- pr1 (A1 x) (A2 x)} -> {K |- pr1 B1 B2} ->
     {K |- pr1 (A1 B1) (A2 B2)}

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

  
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  ============================
   forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
     {K, pr1 x x |- pr1 (A1 x) (A2 x)}@ -> {K |- pr1 B1 B2} ->
     {K |- pr1 (A1 B1) (A2 B2)}

pre_pr1_subst_lem < intros.
1 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H2 : {K, pr1 n1 n1 |- pr1 (A1 n1) (A2 n1)}@
  H3 : {K |- pr1 B1 B2}
  ============================
   {K |- pr1 (A1 B1) (A2 B2)}

pre_pr1_subst_lem < case H2.
4 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : member (pr1 (A1 n1) (A2 n1)) (pr1 n1 n1 :: K)
  ============================
   {K |- pr1 (A1 B1) (A2 B2)}

subgoal 2 is:
 {K |- pr1 (app (T1 B1) (S1 B1)) (app (T2 B2) (S2 B2))}

subgoal 3 is:
 {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 4 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < case H4.
5 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  ============================
   {K |- pr1 B1 B2}

subgoal 2 is:
 {K |- pr1 (A1 B1) (A2 B2)}

subgoal 3 is:
 {K |- pr1 (app (T1 B1) (S1 B1)) (app (T2 B2) (S2 B2))}

subgoal 4 is:
 {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 5 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < search.
4 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H5 : member (pr1 (A1 n1) (A2 n1)) K
  ============================
   {K |- pr1 (A1 B1) (A2 B2)}

subgoal 2 is:
 {K |- pr1 (app (T1 B1) (S1 B1)) (app (T2 B2) (S2 B2))}

subgoal 3 is:
 {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 4 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < apply pr1_worlds to H1 H5.
4 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H5 : member (pr1 (A2 n1) (A2 n1)) K
  H6 : name (A2 n1)
  H7 : member (trm (A2 n1)) L
  H8 : member (cd1 (A2 n1) (A2 n1)) J
  H9 : member (notabs (A2 n1)) J
  ============================
   {K |- pr1 (A2 B1) (A2 B2)}

subgoal 2 is:
 {K |- pr1 (app (T1 B1) (S1 B1)) (app (T2 B2) (S2 B2))}

subgoal 3 is:
 {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 4 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < case H6.
5 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs (L n2) (K n2) (J n2)
  H3 : {K n2 |- pr1 (B1 n2) (B2 n2)}
  H5 : member (pr1 n2 n2) (K n2)
  H7 : member (trm n2) (L n2)
  H8 : member (cd1 n2 n2) (J n2)
  H9 : member (notabs n2) (J n2)
  ============================
   {K n2 |- pr1 n2 n2}

subgoal 2 is:
 {K |- pr1 B1 B2}

subgoal 3 is:
 {K |- pr1 (app (T1 B1) (S1 B1)) (app (T2 B2) (S2 B2))}

subgoal 4 is:
 {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 5 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < search.
4 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H5 : member (pr1 n1 n1) K
  H7 : member (trm n1) L
  H8 : member (cd1 n1 n1) J
  H9 : member (notabs n1) J
  ============================
   {K |- pr1 B1 B2}

subgoal 2 is:
 {K |- pr1 (app (T1 B1) (S1 B1)) (app (T2 B2) (S2 B2))}

subgoal 3 is:
 {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 4 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < search.
3 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J, S2, T2, S1, T1
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1 |- pr1 (T1 n1) (T2 n1)}*
  H5 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S2 n1)}*
  ============================
   {K |- pr1 (app (T1 B1) (S1 B1)) (app (T2 B2) (S2 B2))}

subgoal 2 is:
 {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 3 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < apply IH to H1 H4 H3.
3 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J, S2, T2, S1, T1
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1 |- pr1 (T1 n1) (T2 n1)}*
  H5 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S2 n1)}*
  H6 : {K |- pr1 (T1 B1) (T2 B2)}
  ============================
   {K |- pr1 (app (T1 B1) (S1 B1)) (app (T2 B2) (S2 B2))}

subgoal 2 is:
 {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 3 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < apply IH to H1 H5 H3.
3 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J, S2, T2, S1, T1
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1 |- pr1 (T1 n1) (T2 n1)}*
  H5 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S2 n1)}*
  H6 : {K |- pr1 (T1 B1) (T2 B2)}
  H7 : {K |- pr1 (S1 B1) (S2 B2)}
  ============================
   {K |- pr1 (app (T1 B1) (S1 B1)) (app (T2 B2) (S2 B2))}

subgoal 2 is:
 {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 3 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < search.
2 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J, S2, S1
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1, pr1 n2 n2 |- pr1 (S1 n1 n2) (S2 n1 n2)}*
  ============================
   {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 2 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

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

  Variables: A1, A2, B1, B2, L, K, J, S2, S1
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1, pr1 n2 n2 |- pr1 (S1 n1 n2) (S2 n1 n2)}*
  H5 : {K, pr1 n2 n2 |- pr1 (S1 B1 n2) (S2 B2 n2)}
  ============================
   {K |- pr1 (abs (S1 B1)) (abs (S2 B2))}

subgoal 2 is:
 {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < search.
1 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J, S2, T2, S1, T1
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1 |- pr1 (abs (T1 n1)) (abs (T2 n1))}*
  H5 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S2 n1)}*
  ============================
   {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

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

  Variables: A1, A2, B1, B2, L, K, J, S2, T2, S1, T1
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1 |- pr1 (abs (T1 n1)) (abs (T2 n1))}*
  H5 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S2 n1)}*
  H6 : {K |- pr1 (abs (T1 B1)) (abs (T2 B2))}
  ============================
   {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

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

  Variables: A1, A2, B1, B2, L, K, J, S2, T2, S1, T1
  IH : forall A1 A2 B1 B2 L K J, nabla x, ctxs L K J ->
         {K, pr1 x x |- pr1 (A1 x) (A2 x)}* -> {K |- pr1 B1 B2} ->
         {K |- pr1 (A1 B1) (A2 B2)}
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1 |- pr1 (abs (T1 n1)) (abs (T2 n1))}*
  H5 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S2 n1)}*
  H6 : {K |- pr1 (abs (T1 B1)) (abs (T2 B2))}
  H7 : {K |- pr1 (S1 B1) (S2 B2)}
  ============================
   {K |- pr1 (app (abs (T1 B1)) (S1 B1)) (T2 B2 (S2 B2))}

pre_pr1_subst_lem < search.
Proof completed.
Abella < Theorem pr1_subst_lem : 
forall A1 A2 B1 B2 L K J, ctxs L K J -> {K |- pr1 (abs A1) (abs A2)} ->
  {K |- pr1 B1 B2} -> {K |- pr1 (A1 B1) (A2 B2)}.
1 subgoal(s).

  
  ============================
   forall A1 A2 B1 B2 L K J, ctxs L K J -> {K |- pr1 (abs A1) (abs A2)} ->
     {K |- pr1 B1 B2} -> {K |- pr1 (A1 B1) (A2 B2)}

pr1_subst_lem < intros.
1 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  H1 : ctxs L K J
  H2 : {K |- pr1 (abs A1) (abs A2)}
  H3 : {K |- pr1 B1 B2}
  ============================
   {K |- pr1 (A1 B1) (A2 B2)}

pr1_subst_lem < case H2.
2 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : member (pr1 (abs A1) (abs A2)) K
  ============================
   {K |- pr1 (A1 B1) (A2 B2)}

subgoal 2 is:
 {K |- pr1 (A1 B1) (A2 B2)}

pr1_subst_lem < apply pr1_worlds to H1 H4.
2 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : member (pr1 (abs A2) (abs A2)) K
  H5 : name (abs A2)
  H6 : member (trm (abs A2)) L
  H7 : member (cd1 (abs A2) (abs A2)) J
  H8 : member (notabs (abs A2)) J
  ============================
   {K |- pr1 (A2 B1) (A2 B2)}

subgoal 2 is:
 {K |- pr1 (A1 B1) (A2 B2)}

pr1_subst_lem < case H5.
1 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1 |- pr1 (A1 n1) (A2 n1)}
  ============================
   {K |- pr1 (A1 B1) (A2 B2)}

pr1_subst_lem < apply pre_pr1_subst_lem to H1 H4 H3.
1 subgoal(s).

  Variables: A1, A2, B1, B2, L, K, J
  H1 : ctxs L K J
  H3 : {K |- pr1 B1 B2}
  H4 : {K, pr1 n1 n1 |- pr1 (A1 n1) (A2 n1)}
  H5 : {K |- pr1 (A1 B1) (A2 B2)}
  ============================
   {K |- pr1 (A1 B1) (A2 B2)}

pr1_subst_lem < search.
Proof completed.
Abella < Theorem cd1_pr1_triangle : 
forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C} ->
  {K |- pr1 B C}.
1 subgoal(s).

  
  ============================
   forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C} ->
     {K |- pr1 B C}

cd1_pr1_triangle < induction on 3.
1 subgoal(s).

  
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  ============================
   forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}@ ->
     {K |- pr1 B C}

cd1_pr1_triangle < intros.
1 subgoal(s).

  Variables: A, B, C, L, K, J
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H2 : {K |- pr1 A B}
  H3 : {J |- cd1 A C}@
  ============================
   {K |- pr1 B C}

cd1_pr1_triangle < case H3.
4 subgoal(s).

  Variables: A, B, C, L, K, J
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H2 : {K |- pr1 A B}
  H4 : member (cd1 A C) J
  ============================
   {K |- pr1 B C}

subgoal 2 is:
 {K |- pr1 B (app T2 S2)}

subgoal 3 is:
 {K |- pr1 B (abs S2)}

subgoal 4 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < apply cd1_worlds to H1 H4.
4 subgoal(s).

  Variables: A, B, C, L, K, J
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H2 : {K |- pr1 C B}
  H4 : member (cd1 C C) J
  H5 : name C
  H6 : member (trm C) L
  H7 : member (pr1 C C) K
  H8 : member (notabs C) J
  ============================
   {K |- pr1 B C}

subgoal 2 is:
 {K |- pr1 B (app T2 S2)}

subgoal 3 is:
 {K |- pr1 B (abs S2)}

subgoal 4 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < apply pr1_name to H1 H2 H5.
4 subgoal(s).

  Variables: A, B, C, L, K, J
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H2 : {K |- pr1 C C}
  H4 : member (cd1 C C) J
  H5 : name C
  H6 : member (trm C) L
  H7 : member (pr1 C C) K
  H8 : member (notabs C) J
  ============================
   {K |- pr1 C C}

subgoal 2 is:
 {K |- pr1 B (app T2 S2)}

subgoal 3 is:
 {K |- pr1 B (abs S2)}

subgoal 4 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < search.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H2 : {K |- pr1 (app T1 S1) B}
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  ============================
   {K |- pr1 B (app T2 S2)}

subgoal 2 is:
 {K |- pr1 B (abs S2)}

subgoal 3 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < case H2.
5 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : member (pr1 (app T1 S1) B) K
  ============================
   {K |- pr1 B (app T2 S2)}

subgoal 2 is:
 {K |- pr1 (app T4 S4) (app T2 S2)}

subgoal 3 is:
 {K |- pr1 (T4 S4) (app T2 S2)}

subgoal 4 is:
 {K |- pr1 B (abs S2)}

subgoal 5 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < apply pr1_worlds to H1 H7.
5 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : member (pr1 (app T1 S1) (app T1 S1)) K
  H8 : name (app T1 S1)
  H9 : member (trm (app T1 S1)) L
  H10 : member (cd1 (app T1 S1) (app T1 S1)) J
  H11 : member (notabs (app T1 S1)) J
  ============================
   {K |- pr1 (app T1 S1) (app T2 S2)}

subgoal 2 is:
 {K |- pr1 (app T4 S4) (app T2 S2)}

subgoal 3 is:
 {K |- pr1 (T4 S4) (app T2 S2)}

subgoal 4 is:
 {K |- pr1 B (abs S2)}

subgoal 5 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < case H8.
4 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : {K |- pr1 T1 T4}
  H8 : {K |- pr1 S1 S4}
  ============================
   {K |- pr1 (app T4 S4) (app T2 S2)}

subgoal 2 is:
 {K |- pr1 (T4 S4) (app T2 S2)}

subgoal 3 is:
 {K |- pr1 B (abs S2)}

subgoal 4 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < apply IH to H1 H7 H5.
4 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : {K |- pr1 T1 T4}
  H8 : {K |- pr1 S1 S4}
  H9 : {K |- pr1 T4 T2}
  ============================
   {K |- pr1 (app T4 S4) (app T2 S2)}

subgoal 2 is:
 {K |- pr1 (T4 S4) (app T2 S2)}

subgoal 3 is:
 {K |- pr1 B (abs S2)}

subgoal 4 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < apply IH to H1 H8 H6.
4 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- notabs T1}*
  H5 : {J |- cd1 T1 T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : {K |- pr1 T1 T4}
  H8 : {K |- pr1 S1 S4}
  H9 : {K |- pr1 T4 T2}
  H10 : {K |- pr1 S4 S2}
  ============================
   {K |- pr1 (app T4 S4) (app T2 S2)}

subgoal 2 is:
 {K |- pr1 (T4 S4) (app T2 S2)}

subgoal 3 is:
 {K |- pr1 B (abs S2)}

subgoal 4 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < search.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4, T3
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- notabs (abs T3)}*
  H5 : {J |- cd1 (abs T3) T2}*
  H6 : {J |- cd1 S1 S2}*
  H7 : {K |- pr1 (abs T3) (abs T4)}
  H8 : {K |- pr1 S1 S4}
  ============================
   {K |- pr1 (T4 S4) (app T2 S2)}

subgoal 2 is:
 {K |- pr1 B (abs S2)}

subgoal 3 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < apply notabs_abs_absurd to H1 H4.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H2 : {K |- pr1 (abs S1) B}
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  ============================
   {K |- pr1 B (abs S2)}

subgoal 2 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < case H2.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  H5 : member (pr1 (abs S1) B) K
  ============================
   {K |- pr1 B (abs S2)}

subgoal 2 is:
 {K |- pr1 (abs S4) (abs S2)}

subgoal 3 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < apply pr1_worlds to H1 H5.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  H5 : member (pr1 (abs S1) (abs S1)) K
  H6 : name (abs S1)
  H7 : member (trm (abs S1)) L
  H8 : member (cd1 (abs S1) (abs S1)) J
  H9 : member (notabs (abs S1)) J
  ============================
   {K |- pr1 (abs S1) (abs S2)}

subgoal 2 is:
 {K |- pr1 (abs S4) (abs S2)}

subgoal 3 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < case H6.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1, S4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  H5 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S4 n1)}
  ============================
   {K |- pr1 (abs S4) (abs S2)}

subgoal 2 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < apply IH to _ H5 H4.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, S1, S4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J, notabs n1, cd1 n1 n1 |- cd1 (S1 n1) (S2 n1)}*
  H5 : {K, pr1 n1 n1 |- pr1 (S1 n1) (S4 n1)}
  H6 : {K, pr1 n1 n1 |- pr1 (S4 n1) (S2 n1)}
  ============================
   {K |- pr1 (abs S4) (abs S2)}

subgoal 2 is:
 {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < search.
1 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H2 : {K |- pr1 (app (abs T1) S1) B}
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  ============================
   {K |- pr1 B (T2 S2)}

cd1_pr1_triangle < case H2.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : member (pr1 (app (abs T1) S1) B) K
  ============================
   {K |- pr1 B (T2 S2)}

subgoal 2 is:
 {K |- pr1 (app T4 S4) (T2 S2)}

subgoal 3 is:
 {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < apply pr1_worlds to H1 H6.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : member (pr1 (app (abs T1) S1) (app (abs T1) S1)) K
  H7 : name (app (abs T1) S1)
  H8 : member (trm (app (abs T1) S1)) L
  H9 : member (cd1 (app (abs T1) S1) (app (abs T1) S1)) J
  H10 : member (notabs (app (abs T1) S1)) J
  ============================
   {K |- pr1 (app (abs T1) S1) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (app T4 S4) (T2 S2)}

subgoal 3 is:
 {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < case H7.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {K |- pr1 (abs T1) T4}
  H7 : {K |- pr1 S1 S4}
  ============================
   {K |- pr1 (app T4 S4) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < case H6.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H7 : {K |- pr1 S1 S4}
  H8 : member (pr1 (abs T1) T4) K
  ============================
   {K |- pr1 (app T4 S4) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (app (abs S5) S4) (T2 S2)}

subgoal 3 is:
 {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < apply pr1_worlds to H1 H8.
3 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H7 : {K |- pr1 S1 S4}
  H8 : member (pr1 (abs T1) (abs T1)) K
  H9 : name (abs T1)
  H10 : member (trm (abs T1)) L
  H11 : member (cd1 (abs T1) (abs T1)) J
  H12 : member (notabs (abs T1)) J
  ============================
   {K |- pr1 (app (abs T1) S4) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (app (abs S5) S4) (T2 S2)}

subgoal 3 is:
 {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < case H9.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4, S5
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H7 : {K |- pr1 S1 S4}
  H8 : {K, pr1 n1 n1 |- pr1 (T1 n1) (S5 n1)}
  ============================
   {K |- pr1 (app (abs S5) S4) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < apply IH to H1 H7 H5.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4, S5
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H7 : {K |- pr1 S1 S4}
  H8 : {K, pr1 n1 n1 |- pr1 (T1 n1) (S5 n1)}
  H9 : {K |- pr1 S4 S2}
  ============================
   {K |- pr1 (app (abs S5) S4) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < apply IH to H1 _ H4.
2 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4, S5
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H7 : {K |- pr1 S1 S4}
  H8 : {K, pr1 n1 n1 |- pr1 (T1 n1) (S5 n1)}
  H9 : {K |- pr1 S4 S2}
  H10 : {K |- pr1 (abs (x1\S5 x1)) (abs T2)}
  ============================
   {K |- pr1 (app (abs S5) S4) (T2 S2)}

subgoal 2 is:
 {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < search.
1 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {K |- pr1 (abs T1) (abs T4)}
  H7 : {K |- pr1 S1 S4}
  ============================
   {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < apply IH to H1 H7 H5.
1 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {K |- pr1 (abs T1) (abs T4)}
  H7 : {K |- pr1 S1 S4}
  H8 : {K |- pr1 S4 S2}
  ============================
   {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < apply IH to H1 _ H4.
1 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {K |- pr1 (abs T1) (abs T4)}
  H7 : {K |- pr1 S1 S4}
  H8 : {K |- pr1 S4 S2}
  H9 : {K |- pr1 (abs T4) (abs T2)}
  ============================
   {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < apply pr1_subst_lem to H1 H9 H8.
1 subgoal(s).

  Variables: A, B, C, L, K, J, S2, T2, S1, T1, S4, T4
  IH : forall A B C L K J, ctxs L K J -> {K |- pr1 A B} -> {J |- cd1 A C}* ->
         {K |- pr1 B C}
  H1 : ctxs L K J
  H4 : {J |- cd1 (abs T1) (abs T2)}*
  H5 : {J |- cd1 S1 S2}*
  H6 : {K |- pr1 (abs T1) (abs T4)}
  H7 : {K |- pr1 S1 S4}
  H8 : {K |- pr1 S4 S2}
  H9 : {K |- pr1 (abs T4) (abs T2)}
  H10 : {K |- pr1 (T4 S4) (T2 S2)}
  ============================
   {K |- pr1 (T4 S4) (T2 S2)}

cd1_pr1_triangle < search.
Proof completed.
Abella < Theorem pr1_diamond : 
forall A B1 B2 C L K J, ctxs L K J -> {K |- pr1 A B1} -> {K |- pr1 A B2} ->
  (exists C, {K |- pr1 B1 C} /\ {K |- pr1 B2 C}).
1 subgoal(s).

  
  ============================
   forall A B1 B2 C L K J, ctxs L K J -> {K |- pr1 A B1} ->
     {K |- pr1 A B2} -> (exists C, {K |- pr1 B1 C} /\ {K |- pr1 B2 C})

pr1_diamond < intros.
1 subgoal(s).

  Variables: A, B1, B2, C, L, K, J
  H1 : ctxs L K J
  H2 : {K |- pr1 A B1}
  H3 : {K |- pr1 A B2}
  ============================
   exists C, {K |- pr1 B1 C} /\ {K |- pr1 B2 C}

pr1_diamond < apply pr1_trm to H1 H2.
1 subgoal(s).

  Variables: A, B1, B2, C, L, K, J
  H1 : ctxs L K J
  H2 : {K |- pr1 A B1}
  H3 : {K |- pr1 A B2}
  H4 : {L |- trm A}
  ============================
   exists C, {K |- pr1 B1 C} /\ {K |- pr1 B2 C}

pr1_diamond < apply cd1_exists to H1 H4.
1 subgoal(s).

  Variables: A, B1, B2, C, L, K, J, B
  H1 : ctxs L K J
  H2 : {K |- pr1 A B1}
  H3 : {K |- pr1 A B2}
  H4 : {L |- trm A}
  H5 : {J |- cd1 A B}
  ============================
   exists C, {K |- pr1 B1 C} /\ {K |- pr1 B2 C}

pr1_diamond < apply cd1_pr1_triangle to H1 H2 H5.
1 subgoal(s).

  Variables: A, B1, B2, C, L, K, J, B
  H1 : ctxs L K J
  H2 : {K |- pr1 A B1}
  H3 : {K |- pr1 A B2}
  H4 : {L |- trm A}
  H5 : {J |- cd1 A B}
  H6 : {K |- pr1 B1 B}
  ============================
   exists C, {K |- pr1 B1 C} /\ {K |- pr1 B2 C}

pr1_diamond < apply cd1_pr1_triangle to H1 H3 H5.
1 subgoal(s).

  Variables: A, B1, B2, C, L, K, J, B
  H1 : ctxs L K J
  H2 : {K |- pr1 A B1}
  H3 : {K |- pr1 A B2}
  H4 : {L |- trm A}
  H5 : {J |- cd1 A B}
  H6 : {K |- pr1 B1 B}
  H7 : {K |- pr1 B2 B}
  ============================
   exists C, {K |- pr1 B1 C} /\ {K |- pr1 B2 C}

pr1_diamond < search.
Proof completed.
Abella < Goodbye.