Welcome to Abella 2.0.3-dev
Abella < Specification "str1".
Reading specification "str1"
Abella < Define ctx : olist ->
prop by 
ctx nil;
ctx ((p => q) :: L) := ctx L.
Abella < Theorem ctx_mem : 
forall L E, ctx L -> member E L -> E = p => q.

============================
 forall L E, ctx L -> member E L -> E = p => q

ctx_mem < induction on 2.

IH : forall L E, ctx L -> member E L * -> E = p => q
============================
 forall L E, ctx L -> member E L @ -> E = p => q

ctx_mem < intros.

Variables: L E
IH : forall L E, ctx L -> member E L * -> E = p => q
H1 : ctx L
H2 : member E L @
============================
 E = p => q

ctx_mem < case H2.
Subgoal 1:

Variables: E L1
IH : forall L E, ctx L -> member E L * -> E = p => q
H1 : ctx (E :: L1)
============================
 E = p => q

Subgoal 2 is:
 E = p => q

ctx_mem < case H1.
Subgoal 1:

Variables: L1
IH : forall L E, ctx L -> member E L * -> E = p => q
H3 : ctx L1
============================
 p => q = p => q

Subgoal 2 is:
 E = p => q

ctx_mem < search.
Subgoal 2:

Variables: E L1 B
IH : forall L E, ctx L -> member E L * -> E = p => q
H1 : ctx (B :: L1)
H3 : member E L1 *
============================
 E = p => q

ctx_mem < case H1.
Subgoal 2:

Variables: E L1
IH : forall L E, ctx L -> member E L * -> E = p => q
H3 : member E L1 *
H4 : ctx L1
============================
 E = p => q

ctx_mem < apply IH to H4 H3.
Subgoal 2:

Variables: L1
IH : forall L E, ctx L -> member E L * -> E = p => q
H3 : member (p => q) L1 *
H4 : ctx L1
============================
 p => q = p => q

ctx_mem < search.
Proof completed.
Abella < Theorem indep : 
(forall L, ctx L -> {L, p |- p} -> {L |- p}) /\
  (forall L, ctx L -> {L, p |- q} -> {L |- q}) /\
  (forall L, ctx L -> {L, p |- r} -> {L |- r}).

============================
 (forall L, ctx L -> {L, p |- p} -> {L |- p}) /\
   (forall L, ctx L -> {L, p |- q} -> {L |- q}) /\
   (forall L, ctx L -> {L, p |- r} -> {L |- r})

indep < induction on 2 2 2.

IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
============================
 (forall L, ctx L -> {L, p |- p}@ -> {L |- p}) /\
   (forall L, ctx L -> {L, p |- q}@ -> {L |- q}) /\
   (forall L, ctx L -> {L, p |- r}@ -> {L |- r})

indep < intros.

IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
============================
 (forall L, ctx L -> {L, p |- p}@ -> {L |- p}) /\
   (forall L, ctx L -> {L, p |- q}@ -> {L |- q}) /\
   (forall L, ctx L -> {L, p |- r}@ -> {L |- r})

indep < split.
Subgoal 1:

IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
============================
 forall L, ctx L -> {L, p |- p}@ -> {L |- p}

Subgoal 2 is:
 forall L, ctx L -> {L, p |- q}@ -> {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < intros.
Subgoal 1:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H2 : {L, p |- p}@
============================
 {L |- p}

Subgoal 2 is:
 forall L, ctx L -> {L, p |- q}@ -> {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < case H2.
Subgoal 1:

Variables: L F
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [F] |- p}*
H4 : member F (p :: L)
============================
 {L |- p}

Subgoal 2 is:
 forall L, ctx L -> {L, p |- q}@ -> {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < case H4.
Subgoal 1.1:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [p] |- p}*
============================
 {L |- p}

Subgoal 1.2 is:
 {L |- p}

Subgoal 2 is:
 forall L, ctx L -> {L, p |- q}@ -> {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < case H3.
Subgoal 1.1:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
============================
 {L |- p}

Subgoal 1.2 is:
 {L |- p}

Subgoal 2 is:
 forall L, ctx L -> {L, p |- q}@ -> {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < skip.
Subgoal 1.2:

Variables: L F
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [F] |- p}*
H5 : member F L
============================
 {L |- p}

Subgoal 2 is:
 forall L, ctx L -> {L, p |- q}@ -> {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < apply ctx_mem to _ H5.
Subgoal 1.2:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [p => q] |- p}*
H5 : member (p => q) L
============================
 {L |- p}

Subgoal 2 is:
 forall L, ctx L -> {L, p |- q}@ -> {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < case H3.
Subgoal 2:

IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
============================
 forall L, ctx L -> {L, p |- q}@ -> {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < intros.
Subgoal 2:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H2 : {L, p |- q}@
============================
 {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < case H2.
Subgoal 2:

Variables: L F
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [F] |- q}*
H4 : member F (p :: L)
============================
 {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < case H4.
Subgoal 2.1:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [p] |- q}*
============================
 {L |- q}

Subgoal 2.2 is:
 {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < case H3.
Subgoal 2.2:

Variables: L F
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [F] |- q}*
H5 : member F L
============================
 {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < apply ctx_mem to _ H5.
Subgoal 2.2:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [p => q] |- q}*
H5 : member (p => q) L
============================
 {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < case H3.
Subgoal 2.2:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H5 : member (p => q) L
H6 : {L, p |- p}*
============================
 {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < apply IH to _ H6.
Subgoal 2.2:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H5 : member (p => q) L
H6 : {L, p |- p}*
H7 : {L |- p}
============================
 {L |- q}

Subgoal 3 is:
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < search.
Subgoal 3:

IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
============================
 forall L, ctx L -> {L, p |- r}@ -> {L |- r}

indep < intros.
Subgoal 3:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H2 : {L, p |- r}@
============================
 {L |- r}

indep < case H2.
Subgoal 3.1:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, p => q |- r}*
============================
 {L |- r}

Subgoal 3.2 is:
 {L |- r}

Subgoal 3.3 is:
 {L |- r}

indep < apply IH2 to _ H3.
Subgoal 3.1:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, p => q |- r}*
H4 : {L, p => q |- r}
============================
 {L |- r}

Subgoal 3.2 is:
 {L |- r}

Subgoal 3.3 is:
 {L |- r}

indep < search.
Subgoal 3.2:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p |- q}*
============================
 {L |- r}

Subgoal 3.3 is:
 {L |- r}

indep < apply IH1 to _ H3.
Subgoal 3.2:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p |- q}*
H4 : {L |- q}
============================
 {L |- r}

Subgoal 3.3 is:
 {L |- r}

indep < search.
Subgoal 3.3:

Variables: L F
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [F] |- r}*
H4 : member F (p :: L)
============================
 {L |- r}

indep < case H4.
Subgoal 3.3.1:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [p] |- r}*
============================
 {L |- r}

Subgoal 3.3.2 is:
 {L |- r}

indep < case H3.
Subgoal 3.3.2:

Variables: L F
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [F] |- r}*
H5 : member F L
============================
 {L |- r}

indep < apply ctx_mem to _ H5.
Subgoal 3.3.2:

Variables: L
IH : forall L, ctx L -> {L, p |- p}* -> {L |- p}
IH1 : forall L, ctx L -> {L, p |- q}* -> {L |- q}
IH2 : forall L, ctx L -> {L, p |- r}* -> {L |- r}
H1 : ctx L
H3 : {L, p, [p => q] |- r}*
H5 : member (p => q) L
============================
 {L |- r}

indep < case H3.
Proof completed.
Abella < Goodbye.