Welcome to Abella 1.1.3-dev2
Reading clauses from poplmark-1a.mod
Abella < Define nabla x, name x.
Abella < Define ctx nil.
Abella < Define ctx (bound X U :: L) := name X /\ ctx L.
Abella < Define cty L top.
Abella < Define cty L X := exists U, member (bound X U) L.
Abella < Define cty L (arrow T1 T2) := cty L T1 /\ cty L T2.
Abella < Define cty L (all T1 T2) := cty L T1 /\ (nabla x, cty (bound x T1 :: L) (T2 x)).
Abella < Define ty top.
Abella < Define nabla x, ty x.
Abella < Define ty (arrow T1 T2) := ty T1 /\ ty T2.
Abella < Define ty (all T1 T2) := ty T1 /\ (nabla x, ty (T2 x)).
Abella < Theorem sub_refl :
forall L T, cty L T -> {L |- sub T T}.
1 subgoal(s).
============================
forall L T, cty L T -> {L |- sub T T}
sub_refl < induction on 1.
1 subgoal(s).
IH : forall L T, cty L T * -> {L |- sub T T}
============================
forall L T, cty L T @ -> {L |- sub T T}
sub_refl < intros.
1 subgoal(s).
Variables: L, T
IH : forall L T, cty L T * -> {L |- sub T T}
H1 : cty L T @
============================
{L |- sub T T}
sub_refl < case H1.
4 subgoal(s).
Variables: L, T
IH : forall L T, cty L T * -> {L |- sub T T}
============================
{L |- sub top top}
subgoal 2 is:
{L |- sub T T}
subgoal 3 is:
{L |- sub (arrow T1 T2) (arrow T1 T2)}
subgoal 4 is:
{L |- sub (all T1 T2) (all T1 T2)}
sub_refl < search.
3 subgoal(s).
Variables: L, T, U
IH : forall L T, cty L T * -> {L |- sub T T}
H2 : member (bound T U) L
============================
{L |- sub T T}
subgoal 2 is:
{L |- sub (arrow T1 T2) (arrow T1 T2)}
subgoal 3 is:
{L |- sub (all T1 T2) (all T1 T2)}
sub_refl < search.
2 subgoal(s).
Variables: L, T, T2, T1
IH : forall L T, cty L T * -> {L |- sub T T}
H2 : cty L T1 *
H3 : cty L T2 *
============================
{L |- sub (arrow T1 T2) (arrow T1 T2)}
subgoal 2 is:
{L |- sub (all T1 T2) (all T1 T2)}
sub_refl < apply IH to H2.
2 subgoal(s).
Variables: L, T, T2, T1
IH : forall L T, cty L T * -> {L |- sub T T}
H2 : cty L T1 *
H3 : cty L T2 *
H4 : {L |- sub T1 T1}
============================
{L |- sub (arrow T1 T2) (arrow T1 T2)}
subgoal 2 is:
{L |- sub (all T1 T2) (all T1 T2)}
sub_refl < apply IH to H3.
2 subgoal(s).
Variables: L, T, T2, T1
IH : forall L T, cty L T * -> {L |- sub T T}
H2 : cty L T1 *
H3 : cty L T2 *
H4 : {L |- sub T1 T1}
H5 : {L |- sub T2 T2}
============================
{L |- sub (arrow T1 T2) (arrow T1 T2)}
subgoal 2 is:
{L |- sub (all T1 T2) (all T1 T2)}
sub_refl < search.
1 subgoal(s).
Variables: L, T, T2, T1
IH : forall L T, cty L T * -> {L |- sub T T}
H2 : cty L T1 *
H3 : cty (bound n1 T1 :: L) (T2 n1) *
============================
{L |- sub (all T1 T2) (all T1 T2)}
sub_refl < apply IH to H2.
1 subgoal(s).
Variables: L, T, T2, T1
IH : forall L T, cty L T * -> {L |- sub T T}
H2 : cty L T1 *
H3 : cty (bound n1 T1 :: L) (T2 n1) *
H4 : {L |- sub T1 T1}
============================
{L |- sub (all T1 T2) (all T1 T2)}
sub_refl < apply IH to H3.
1 subgoal(s).
Variables: L, T, T2, T1
IH : forall L T, cty L T * -> {L |- sub T T}
H2 : cty L T1 *
H3 : cty (bound n1 T1 :: L) (T2 n1) *
H4 : {L |- sub T1 T1}
H5 : {L, bound n1 T1 |- sub (T2 n1) (T2 n1)}
============================
{L |- sub (all T1 T2) (all T1 T2)}
sub_refl < search.
Proof completed.
Abella < Theorem ctx_sub_absurd :
forall S T L, ctx L -> member (sub S T) L -> false.
1 subgoal(s).
============================
forall S T L, ctx L -> member (sub S T) L -> false
ctx_sub_absurd < induction on 1.
1 subgoal(s).
IH : forall S T L, ctx L * -> member (sub S T) L -> false
============================
forall S T L, ctx L @ -> member (sub S T) L -> false
ctx_sub_absurd < intros.
1 subgoal(s).
Variables: S, T, L
IH : forall S T L, ctx L * -> member (sub S T) L -> false
H1 : ctx L @
H2 : member (sub S T) L
============================
false
ctx_sub_absurd < case H1.
2 subgoal(s).
Variables: S, T, L
IH : forall S T L, ctx L * -> member (sub S T) L -> false
H2 : member (sub S T) nil
============================
false
subgoal 2 is:
false
ctx_sub_absurd < case H2.
1 subgoal(s).
Variables: S, T, L, L1, U, X
IH : forall S T L, ctx L * -> member (sub S T) L -> false
H2 : member (sub S T) (bound X U :: L1)
H3 : name X
H4 : ctx L1 *
============================
false
ctx_sub_absurd < case H2.
1 subgoal(s).
Variables: S, T, L, L1, U, X
IH : forall S T L, ctx L * -> member (sub S T) L -> false
H3 : name X
H4 : ctx L1 *
H5 : member (sub S T) L1
============================
false
ctx_sub_absurd < apply IH to H4 H5.
Proof completed.
Abella < Theorem ctx_name :
forall L X U, ctx L -> member (bound X U) L -> name X.
1 subgoal(s).
============================
forall L X U, ctx L -> member (bound X U) L -> name X
ctx_name < induction on 1.
1 subgoal(s).
IH : forall L X U, ctx L * -> member (bound X U) L -> name X
============================
forall L X U, ctx L @ -> member (bound X U) L -> name X
ctx_name < intros.
1 subgoal(s).
Variables: L, X, U
IH : forall L X U, ctx L * -> member (bound X U) L -> name X
H1 : ctx L @
H2 : member (bound X U) L
============================
name X
ctx_name < case H1.
2 subgoal(s).
Variables: L, X, U
IH : forall L X U, ctx L * -> member (bound X U) L -> name X
H2 : member (bound X U) nil
============================
name X
subgoal 2 is:
name X
ctx_name < case H2.
1 subgoal(s).
Variables: L, X, U, L1, U1, X1
IH : forall L X U, ctx L * -> member (bound X U) L -> name X
H2 : member (bound X U) (bound X1 U1 :: L1)
H3 : name X1
H4 : ctx L1 *
============================
name X
ctx_name < case H2.
2 subgoal(s).
Variables: L, X, U, L1, U1, X1
IH : forall L X U, ctx L * -> member (bound X U) L -> name X
H3 : name X1
H4 : ctx L1 *
============================
name X1
subgoal 2 is:
name X
ctx_name < case H3.
2 subgoal(s).
Variables: L, X, U, L1, U1, X1
IH : forall L X U, ctx L * -> member (bound X U) L -> name X
H4 : ctx (L1 n1) *
============================
name n1
subgoal 2 is:
name X
ctx_name < search.
1 subgoal(s).
Variables: L, X, U, L1, U1, X1
IH : forall L X U, ctx L * -> member (bound X U) L -> name X
H3 : name X1
H4 : ctx L1 *
H5 : member (bound X U) L1
============================
name X
ctx_name < apply IH to H4 H5.
1 subgoal(s).
Variables: L, X, U, L1, U1, X1
IH : forall L X U, ctx L * -> member (bound X U) L -> name X
H3 : name X1
H4 : ctx L1 *
H5 : member (bound X U) L1
H6 : name X
============================
name X
ctx_name < search.
Proof completed.
Abella < Theorem bound_name :
forall L X U, ctx L -> {L |- bound X U} -> name X.
1 subgoal(s).
============================
forall L X U, ctx L -> {L |- bound X U} -> name X
bound_name < intros.
1 subgoal(s).
Variables: L, X, U
H1 : ctx L
H2 : {L |- bound X U}
============================
name X
bound_name < case H2.
1 subgoal(s).
Variables: L, X, U
H1 : ctx L
H3 : member (bound X U) L
============================
name X
bound_name < apply ctx_name to H1 H3.
1 subgoal(s).
Variables: L, X, U
H1 : ctx L
H3 : member (bound X U) L
H4 : name X
============================
name X
bound_name < search.
Proof completed.
Abella < Theorem sub_top :
forall L T, ctx L -> {L |- sub top T} -> T = top.
1 subgoal(s).
============================
forall L T, ctx L -> {L |- sub top T} -> T = top
sub_top < intros.
1 subgoal(s).
Variables: L, T
H1 : ctx L
H2 : {L |- sub top T}
============================
T = top
sub_top < case H2.
4 subgoal(s).
Variables: L, T
H1 : ctx L
H3 : member (sub top T) L
============================
T = top
subgoal 2 is:
top = top
subgoal 3 is:
top = top
subgoal 4 is:
T = top
sub_top < apply ctx_sub_absurd to H1 H3.
3 subgoal(s).
Variables: L, T
H1 : ctx L
============================
top = top
subgoal 2 is:
top = top
subgoal 3 is:
T = top
sub_top < search.
2 subgoal(s).
Variables: L, T, U
H1 : ctx L
H3 : {L |- bound top U}
============================
top = top
subgoal 2 is:
T = top
sub_top < search.
1 subgoal(s).
Variables: L, T, U
H1 : ctx L
H3 : {L |- bound top U}
H4 : {L |- sub U T}
============================
T = top
sub_top < apply bound_name to H1 H3.
1 subgoal(s).
Variables: L, T, U
H1 : ctx L
H3 : {L |- bound top U}
H4 : {L |- sub U T}
H5 : name top
============================
T = top
sub_top < case H5.
Proof completed.
Abella < Theorem dual_theorem :
forall Q, ty Q -> (forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}) /\ (forall L P X TM TN, ctx (bound X Q :: L) ->
{L |- sub P Q} -> {L, bound X Q |- sub TM TN} ->
{L, bound X P |- sub TM TN}).
1 subgoal(s).
============================
forall Q, ty Q -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} -> {L, bound X Q |- sub TM TN} ->
{L, bound X P |- sub TM TN})
dual_theorem < induction on 1.
1 subgoal(s).
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
============================
forall Q, ty Q @ -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} -> {L, bound X Q |- sub TM TN} ->
{L, bound X P |- sub TM TN})
dual_theorem < intros.
1 subgoal(s).
Variables: Q
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
============================
(forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}) /\ (forall L P X TM TN, ctx (bound X Q :: L) ->
{L |- sub P Q} -> {L, bound X Q |- sub TM TN} ->
{L, bound X P |- sub TM TN})
dual_theorem < split*.
2 subgoal(s).
Variables: Q
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
============================
forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} -> {L |- sub S T}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < induction on 2.
2 subgoal(s).
Variables: Q
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
IH1 : forall L S T, ctx L -> {L |- sub S Q}** -> {L |- sub Q T} ->
{L |- sub S T}
============================
forall L S T, ctx L -> {L |- sub S Q}@@ -> {L |- sub Q T} ->
{L |- sub S T}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < intros.
2 subgoal(s).
Variables: Q, L, S, T
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
IH1 : forall L S T, ctx L -> {L |- sub S Q}** -> {L |- sub Q T} ->
{L |- sub S T}
H2 : ctx L
H3 : {L |- sub S Q}@@
H4 : {L |- sub Q T}
============================
{L |- sub S T}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < case H3.
7 subgoal(s).
Variables: Q, L, S, T
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
IH1 : forall L S T, ctx L -> {L |- sub S Q}** -> {L |- sub Q T} ->
{L |- sub S T}
H2 : ctx L
H4 : {L |- sub Q T}
H5 : member (sub S Q) L
============================
{L |- sub S T}
subgoal 2 is:
{L |- sub S T}
subgoal 3 is:
{L |- sub Q T}
subgoal 4 is:
{L |- sub S T}
subgoal 5 is:
{L |- sub (arrow S1 S2) T}
subgoal 6 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 7 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply ctx_sub_absurd to H2 H5.
6 subgoal(s).
Variables: Q, L, S, T
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty top @
IH1 : forall L S T, ctx L -> {L |- sub S top}** -> {L |- sub top T} ->
{L |- sub S T}
H2 : ctx L
H4 : {L |- sub top T}
============================
{L |- sub S T}
subgoal 2 is:
{L |- sub Q T}
subgoal 3 is:
{L |- sub S T}
subgoal 4 is:
{L |- sub (arrow S1 S2) T}
subgoal 5 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 6 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply sub_top to H2 H4.
6 subgoal(s).
Variables: Q, L, S, T
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty top @
IH1 : forall L S T, ctx L -> {L |- sub S top}** -> {L |- sub top T} ->
{L |- sub S T}
H2 : ctx L
H4 : {L |- sub top top}
============================
{L |- sub S top}
subgoal 2 is:
{L |- sub Q T}
subgoal 3 is:
{L |- sub S T}
subgoal 4 is:
{L |- sub (arrow S1 S2) T}
subgoal 5 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 6 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < search.
5 subgoal(s).
Variables: Q, L, S, T, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
IH1 : forall L S T, ctx L -> {L |- sub S Q}** -> {L |- sub Q T} ->
{L |- sub S T}
H2 : ctx L
H4 : {L |- sub Q T}
H5 : {L |- bound Q U}**
============================
{L |- sub Q T}
subgoal 2 is:
{L |- sub S T}
subgoal 3 is:
{L |- sub (arrow S1 S2) T}
subgoal 4 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 5 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < search.
4 subgoal(s).
Variables: Q, L, S, T, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
IH1 : forall L S T, ctx L -> {L |- sub S Q}** -> {L |- sub Q T} ->
{L |- sub S T}
H2 : ctx L
H4 : {L |- sub Q T}
H5 : {L |- bound S U}**
H6 : {L |- sub U Q}**
============================
{L |- sub S T}
subgoal 2 is:
{L |- sub (arrow S1 S2) T}
subgoal 3 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 4 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply IH1 to H2 H6 H4.
4 subgoal(s).
Variables: Q, L, S, T, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
IH1 : forall L S T, ctx L -> {L |- sub S Q}** -> {L |- sub Q T} ->
{L |- sub S T}
H2 : ctx L
H4 : {L |- sub Q T}
H5 : {L |- bound S U}**
H6 : {L |- sub U Q}**
H7 : {L |- sub U T}
============================
{L |- sub S T}
subgoal 2 is:
{L |- sub (arrow S1 S2) T}
subgoal 3 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 4 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < search.
3 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (arrow T1 T2) @
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H4 : {L |- sub (arrow T1 T2) T}
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
============================
{L |- sub (arrow S1 S2) T}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 3 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < case H4.
7 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (arrow T1 T2) @
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : member (sub (arrow T1 T2) T) L
============================
{L |- sub (arrow S1 S2) T}
subgoal 2 is:
{L |- sub (arrow S1 S2) top}
subgoal 3 is:
{L |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 4 is:
{L |- sub (arrow S1 S2) T}
subgoal 5 is:
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 6 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 7 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply ctx_sub_absurd to H2 H7.
6 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (arrow T1 T2) @
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
============================
{L |- sub (arrow S1 S2) top}
subgoal 2 is:
{L |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 3 is:
{L |- sub (arrow S1 S2) T}
subgoal 4 is:
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 5 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 6 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < search.
5 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (arrow T1 T2) @
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- bound (arrow T1 T2) U}
============================
{L |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 2 is:
{L |- sub (arrow S1 S2) T}
subgoal 3 is:
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 4 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 5 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply bound_name to H2 H7.
5 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (arrow T1 T2) @
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- bound (arrow T1 T2) U}
H8 : name (arrow T1 T2)
============================
{L |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 2 is:
{L |- sub (arrow S1 S2) T}
subgoal 3 is:
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 4 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 5 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < case H8.
4 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (arrow T1 T2) @
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- bound (arrow T1 T2) U}
H8 : {L |- sub U T}
============================
{L |- sub (arrow S1 S2) T}
subgoal 2 is:
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 3 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 4 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply bound_name to H2 H7.
4 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (arrow T1 T2) @
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- bound (arrow T1 T2) U}
H8 : {L |- sub U T}
H9 : name (arrow T1 T2)
============================
{L |- sub (arrow S1 S2) T}
subgoal 2 is:
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 3 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 4 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < case H9.
3 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (arrow T1 T2) @
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- sub T3 T1}
H8 : {L |- sub T2 T4}
============================
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 3 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < case H1.
3 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- sub T3 T1}
H8 : {L |- sub T2 T4}
H9 : ty T1 *
H10 : ty T2 *
============================
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 3 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply IH to H9.
3 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- sub T3 T1}
H8 : {L |- sub T2 T4}
H9 : ty T1 *
H10 : ty T2 *
H11 : forall L S T, ctx L -> {L |- sub S T1} -> {L |- sub T1 T} ->
{L |- sub S T}
H12 : forall L P X TM TN, ctx (bound X T1 :: L) -> {L |- sub P T1} ->
{L, bound X T1 |- sub TM TN} -> {L, bound X P |- sub TM TN}
============================
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 3 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply IH to H10.
3 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- sub T3 T1}
H8 : {L |- sub T2 T4}
H9 : ty T1 *
H10 : ty T2 *
H11 : forall L S T, ctx L -> {L |- sub S T1} -> {L |- sub T1 T} ->
{L |- sub S T}
H12 : forall L P X TM TN, ctx (bound X T1 :: L) -> {L |- sub P T1} ->
{L, bound X T1 |- sub TM TN} -> {L, bound X P |- sub TM TN}
H13 : forall L S T, ctx L -> {L |- sub S T2} -> {L |- sub T2 T} ->
{L |- sub S T}
H14 : forall L P X TM TN, ctx (bound X T2 :: L) -> {L |- sub P T2} ->
{L, bound X T2 |- sub TM TN} -> {L, bound X P |- sub TM TN}
============================
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 3 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply H11 to H2 H7 H5.
3 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- sub T3 T1}
H8 : {L |- sub T2 T4}
H9 : ty T1 *
H10 : ty T2 *
H11 : forall L S T, ctx L -> {L |- sub S T1} -> {L |- sub T1 T} ->
{L |- sub S T}
H12 : forall L P X TM TN, ctx (bound X T1 :: L) -> {L |- sub P T1} ->
{L, bound X T1 |- sub TM TN} -> {L, bound X P |- sub TM TN}
H13 : forall L S T, ctx L -> {L |- sub S T2} -> {L |- sub T2 T} ->
{L |- sub S T}
H14 : forall L P X TM TN, ctx (bound X T2 :: L) -> {L |- sub P T2} ->
{L, bound X T2 |- sub TM TN} -> {L, bound X P |- sub TM TN}
H15 : {L |- sub T3 S1}
============================
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 3 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply H13 to H2 H6 H8.
3 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (arrow T1 T2)}** ->
{L |- sub (arrow T1 T2) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L |- sub S2 T2}**
H7 : {L |- sub T3 T1}
H8 : {L |- sub T2 T4}
H9 : ty T1 *
H10 : ty T2 *
H11 : forall L S T, ctx L -> {L |- sub S T1} -> {L |- sub T1 T} ->
{L |- sub S T}
H12 : forall L P X TM TN, ctx (bound X T1 :: L) -> {L |- sub P T1} ->
{L, bound X T1 |- sub TM TN} -> {L, bound X P |- sub TM TN}
H13 : forall L S T, ctx L -> {L |- sub S T2} -> {L |- sub T2 T} ->
{L |- sub S T}
H14 : forall L P X TM TN, ctx (bound X T2 :: L) -> {L |- sub P T2} ->
{L, bound X T2 |- sub TM TN} -> {L, bound X P |- sub TM TN}
H15 : {L |- sub T3 S1}
H16 : {L |- sub S2 T4}
============================
{L |- sub (arrow S1 S2) (arrow T3 T4)}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 3 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < search.
2 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (all T1 (x1\T2 x1)) @
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H4 : {L |- sub (all T1 (x1\T2 x1)) T}
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
============================
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < case H4.
6 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (all T1 (x1\T2 x1)) @
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : member (sub (all T1 (x1\T2 x1)) T) L
============================
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) top}
subgoal 3 is:
{L |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
subgoal 4 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 5 is:
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 6 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply ctx_sub_absurd to H2 H7.
5 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (all T1 (x1\T2 x1)) @
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
============================
{L |- sub (all S1 (x1\S2 x1)) top}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
subgoal 3 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 4 is:
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 5 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < search.
4 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (all T1 (x1\T2 x1)) @
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- bound (all T1 (x1\T2 x1)) U}
============================
{L |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 3 is:
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 4 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply bound_name to H2 H7.
4 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (all T1 (x1\T2 x1)) @
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- bound (all T1 (x1\T2 x1)) U}
H8 : name (all T1 (x1\T2 x1))
============================
{L |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 3 is:
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 4 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < case H8.
3 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (all T1 (x1\T2 x1)) @
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- bound (all T1 (x1\T2 x1)) U}
H8 : {L |- sub U T}
============================
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 3 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply bound_name to H2 H7.
3 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (all T1 (x1\T2 x1)) @
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- bound (all T1 (x1\T2 x1)) U}
H8 : {L |- sub U T}
H9 : name (all T1 (x1\T2 x1))
============================
{L |- sub (all S1 (x1\S2 x1)) T}
subgoal 2 is:
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 3 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < case H9.
2 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty (all T1 (x1\T2 x1)) @
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- sub T3 T1}
H8 : {L, bound n1 T3 |- sub (T2 n1) (T4 n1)}
============================
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < case H1.
2 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- sub T3 T1}
H8 : {L, bound n1 T3 |- sub (T2 n1) (T4 n1)}
H9 : ty T1 *
H10 : ty (T2 n1) *
============================
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply IH to H9.
2 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- sub T3 T1}
H8 : {L, bound n1 T3 |- sub (T2 n1) (T4 n1)}
H9 : ty T1 *
H10 : ty (T2 n1) *
H11 : forall L S T, ctx L -> {L |- sub S T1} -> {L |- sub T1 T} ->
{L |- sub S T}
H12 : forall L P X TM TN, ctx (bound X T1 :: L) -> {L |- sub P T1} ->
{L, bound X T1 |- sub TM TN} -> {L, bound X P |- sub TM TN}
============================
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply IH to H10.
2 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- sub T3 T1}
H8 : {L, bound n1 T3 |- sub (T2 n1) (T4 n1)}
H9 : ty T1 *
H10 : ty (T2 n1) *
H11 : forall L S T, ctx L -> {L |- sub S T1} -> {L |- sub T1 T} ->
{L |- sub S T}
H12 : forall L P X TM TN, ctx (bound X T1 :: L) -> {L |- sub P T1} ->
{L, bound X T1 |- sub TM TN} -> {L, bound X P |- sub TM TN}
H13 : forall L S T, ctx L -> {L |- sub S (T2 n1)} ->
{L |- sub (T2 n1) T} -> {L |- sub S T}
H14 : forall L P X TM TN, ctx (bound X (T2 n1) :: L) ->
{L |- sub P (T2 n1)} -> {L, bound X (T2 n1) |- sub TM TN} ->
{L, bound X P |- sub TM TN}
============================
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply H11 to H2 H7 H5.
2 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- sub T3 T1}
H8 : {L, bound n1 T3 |- sub (T2 n1) (T4 n1)}
H9 : ty T1 *
H10 : ty (T2 n1) *
H11 : forall L S T, ctx L -> {L |- sub S T1} -> {L |- sub T1 T} ->
{L |- sub S T}
H12 : forall L P X TM TN, ctx (bound X T1 :: L) -> {L |- sub P T1} ->
{L, bound X T1 |- sub TM TN} -> {L, bound X P |- sub TM TN}
H13 : forall L S T, ctx L -> {L |- sub S (T2 n1)} ->
{L |- sub (T2 n1) T} -> {L |- sub S T}
H14 : forall L P X TM TN, ctx (bound X (T2 n1) :: L) ->
{L |- sub P (T2 n1)} -> {L, bound X (T2 n1) |- sub TM TN} ->
{L, bound X P |- sub TM TN}
H15 : {L |- sub T3 S1}
============================
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply H12 to _ H7 H6 with X = n1.
2 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- sub T3 T1}
H8 : {L, bound n1 T3 |- sub (T2 n1) (T4 n1)}
H9 : ty T1 *
H10 : ty (T2 n1) *
H11 : forall L S T, ctx L -> {L |- sub S T1} -> {L |- sub T1 T} ->
{L |- sub S T}
H12 : forall L P X TM TN, ctx (bound X T1 :: L) -> {L |- sub P T1} ->
{L, bound X T1 |- sub TM TN} -> {L, bound X P |- sub TM TN}
H13 : forall L S T, ctx L -> {L |- sub S (T2 n1)} ->
{L |- sub (T2 n1) T} -> {L |- sub S T}
H14 : forall L P X TM TN, ctx (bound X (T2 n1) :: L) ->
{L |- sub P (T2 n1)} -> {L, bound X (T2 n1) |- sub TM TN} ->
{L, bound X P |- sub TM TN}
H15 : {L |- sub T3 S1}
H16 : {L, bound n1 T3 |- sub (S2 n1) (T2 n1)}
============================
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < apply H13 to _ H16 H8.
2 subgoal(s).
Variables: Q, L, S, T, T2, T1, S2, S1, T4, T3
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
IH1 : forall L S T, ctx L -> {L |- sub S (all T1 (x1\T2 x1))}** ->
{L |- sub (all T1 (x1\T2 x1)) T} -> {L |- sub S T}
H2 : ctx L
H5 : {L |- sub T1 S1}**
H6 : {L, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H7 : {L |- sub T3 T1}
H8 : {L, bound n1 T3 |- sub (T2 n1) (T4 n1)}
H9 : ty T1 *
H10 : ty (T2 n1) *
H11 : forall L S T, ctx L -> {L |- sub S T1} -> {L |- sub T1 T} ->
{L |- sub S T}
H12 : forall L P X TM TN, ctx (bound X T1 :: L) -> {L |- sub P T1} ->
{L, bound X T1 |- sub TM TN} -> {L, bound X P |- sub TM TN}
H13 : forall L S T, ctx L -> {L |- sub S (T2 n1)} ->
{L |- sub (T2 n1) T} -> {L |- sub S T}
H14 : forall L P X TM TN, ctx (bound X (T2 n1) :: L) ->
{L |- sub P (T2 n1)} -> {L, bound X (T2 n1) |- sub TM TN} ->
{L, bound X P |- sub TM TN}
H15 : {L |- sub T3 S1}
H16 : {L, bound n1 T3 |- sub (S2 n1) (T2 n1)}
H17 : {L, bound n1 T3 |- sub (S2 n1) (T4 n1)}
============================
{L |- sub (all S1 (x1\S2 x1)) (all T3 (x1\T4 x1))}
subgoal 2 is:
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < search.
1 subgoal(s).
Variables: Q
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
============================
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
dual_theorem < induction on 3.
1 subgoal(s).
Variables: Q
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
============================
forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}@@ -> {L, bound X P |- sub TM TN}
dual_theorem < intros.
1 subgoal(s).
Variables: Q, L, P, X, TM, TN
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TM TN}@@
============================
{L, bound X P |- sub TM TN}
dual_theorem < case H5 (keep).
6 subgoal(s).
Variables: Q, L, P, X, TM, TN
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TM TN}@@
H6 : member (sub TM TN) (bound X Q :: L)
============================
{L, bound X P |- sub TM TN}
subgoal 2 is:
{L, bound X P |- sub TM top}
subgoal 3 is:
{L, bound X P |- sub TN TN}
subgoal 4 is:
{L, bound X P |- sub TM TN}
subgoal 5 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 6 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < apply ctx_sub_absurd to H3 H6.
5 subgoal(s).
Variables: Q, L, P, X, TM, TN
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TM top}@@
============================
{L, bound X P |- sub TM top}
subgoal 2 is:
{L, bound X P |- sub TN TN}
subgoal 3 is:
{L, bound X P |- sub TM TN}
subgoal 4 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 5 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < search.
4 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TN TN}@@
H6 : {L, bound X Q |- bound TN U}**
============================
{L, bound X P |- sub TN TN}
subgoal 2 is:
{L, bound X P |- sub TM TN}
subgoal 3 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 4 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < case H6.
4 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TN TN}@@
H7 : member (bound TN U) (bound X Q :: L)
============================
{L, bound X P |- sub TN TN}
subgoal 2 is:
{L, bound X P |- sub TM TN}
subgoal 3 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 4 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < case H7.
5 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub X X}@@
============================
{L, bound X P |- sub X X}
subgoal 2 is:
{L, bound X P |- sub TN TN}
subgoal 3 is:
{L, bound X P |- sub TM TN}
subgoal 4 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 5 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < search.
4 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TN TN}@@
H8 : member (bound TN U) L
============================
{L, bound X P |- sub TN TN}
subgoal 2 is:
{L, bound X P |- sub TM TN}
subgoal 3 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 4 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < search.
3 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TM TN}@@
H6 : {L, bound X Q |- bound TM U}**
H7 : {L, bound X Q |- sub U TN}**
============================
{L, bound X P |- sub TM TN}
subgoal 2 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 3 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < case H6.
3 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TM TN}@@
H7 : {L, bound X Q |- sub U TN}**
H8 : member (bound TM U) (bound X Q :: L)
============================
{L, bound X P |- sub TM TN}
subgoal 2 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 3 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < case H8.
4 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub X TN}@@
H7 : {L, bound X Q |- sub Q TN}**
============================
{L, bound X P |- sub X TN}
subgoal 2 is:
{L, bound X P |- sub TM TN}
subgoal 3 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 4 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < apply IH1 to H3 H4 H7.
4 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub X TN}@@
H7 : {L, bound X Q |- sub Q TN}**
H9 : {L, bound X P |- sub Q TN}
============================
{L, bound X P |- sub X TN}
subgoal 2 is:
{L, bound X P |- sub TM TN}
subgoal 3 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 4 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < case H3.
4 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub X TN}@@
H7 : {L, bound X Q |- sub Q TN}**
H9 : {L, bound X P |- sub Q TN}
H10 : name X
H11 : ctx L
============================
{L, bound X P |- sub X TN}
subgoal 2 is:
{L, bound X P |- sub TM TN}
subgoal 3 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 4 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < apply H2 to _ H4 H9.
4 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub X TN}@@
H7 : {L, bound X Q |- sub Q TN}**
H9 : {L, bound X P |- sub Q TN}
H10 : name X
H11 : ctx L
H12 : {L, bound X P |- sub P TN}
============================
{L, bound X P |- sub X TN}
subgoal 2 is:
{L, bound X P |- sub TM TN}
subgoal 3 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 4 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < search.
3 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TM TN}@@
H7 : {L, bound X Q |- sub U TN}**
H9 : member (bound TM U) L
============================
{L, bound X P |- sub TM TN}
subgoal 2 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 3 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < apply IH1 to H3 H4 H7.
3 subgoal(s).
Variables: Q, L, P, X, TM, TN, U
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub TM TN}@@
H7 : {L, bound X Q |- sub U TN}**
H9 : member (bound TM U) L
H10 : {L, bound X P |- sub U TN}
============================
{L, bound X P |- sub TM TN}
subgoal 2 is:
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 3 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < search.
2 subgoal(s).
Variables: Q, L, P, X, TM, TN, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub (arrow S1 S2) (arrow T1 T2)}@@
H6 : {L, bound X Q |- sub T1 S1}**
H7 : {L, bound X Q |- sub S2 T2}**
============================
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 2 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < apply IH1 to H3 H4 H6.
2 subgoal(s).
Variables: Q, L, P, X, TM, TN, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub (arrow S1 S2) (arrow T1 T2)}@@
H6 : {L, bound X Q |- sub T1 S1}**
H7 : {L, bound X Q |- sub S2 T2}**
H8 : {L, bound X P |- sub T1 S1}
============================
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 2 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < apply IH1 to H3 H4 H7.
2 subgoal(s).
Variables: Q, L, P, X, TM, TN, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub (arrow S1 S2) (arrow T1 T2)}@@
H6 : {L, bound X Q |- sub T1 S1}**
H7 : {L, bound X Q |- sub S2 T2}**
H8 : {L, bound X P |- sub T1 S1}
H9 : {L, bound X P |- sub S2 T2}
============================
{L, bound X P |- sub (arrow S1 S2) (arrow T1 T2)}
subgoal 2 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < search.
1 subgoal(s).
Variables: Q, L, P, X, TM, TN, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}@@
H6 : {L, bound X Q |- sub T1 S1}**
H7 : {L, bound X Q, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
============================
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < apply IH1 to H3 H4 H6.
1 subgoal(s).
Variables: Q, L, P, X, TM, TN, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}@@
H6 : {L, bound X Q |- sub T1 S1}**
H7 : {L, bound X Q, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H8 : {L, bound X P |- sub T1 S1}
============================
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < assert ctx (bound X Q :: bound n1 T1 :: L).
2 subgoal(s).
Variables: Q, L, P, X, TM, TN, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}@@
H6 : {L, bound X Q |- sub T1 S1}**
H7 : {L, bound X Q, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H8 : {L, bound X P |- sub T1 S1}
============================
ctx (bound X Q :: bound n1 T1 :: L)
subgoal 2 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < case H3.
2 subgoal(s).
Variables: Q, L, P, X, TM, TN, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}@@
H6 : {L, bound X Q |- sub T1 S1}**
H7 : {L, bound X Q, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H8 : {L, bound X P |- sub T1 S1}
H9 : name X
H10 : ctx L
============================
ctx (bound X Q :: bound n1 T1 :: L)
subgoal 2 is:
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < search.
1 subgoal(s).
Variables: Q, L, P, X, TM, TN, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}@@
H6 : {L, bound X Q |- sub T1 S1}**
H7 : {L, bound X Q, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H8 : {L, bound X P |- sub T1 S1}
H9 : ctx (bound X Q :: bound n1 T1 :: L)
============================
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < apply IH1 to H9 H4 H7.
1 subgoal(s).
Variables: Q, L, P, X, TM, TN, T2, T1, S2, S1
IH : forall Q, ty Q * -> (forall L S T, ctx L -> {L |- sub S Q} ->
{L |- sub Q T} -> {L |- sub S T}) /\ (forall L P X TM TN,
ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN})
H1 : ty Q @
H2 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
IH1 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN}** -> {L, bound X P |- sub TM TN}
H3 : ctx (bound X Q :: L)
H4 : {L |- sub P Q}
H5 : {L, bound X Q |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}@@
H6 : {L, bound X Q |- sub T1 S1}**
H7 : {L, bound X Q, bound n1 T1 |- sub (S2 n1) (T2 n1)}**
H8 : {L, bound X P |- sub T1 S1}
H9 : ctx (bound X Q :: bound n1 T1 :: L)
H10 : {L, bound n1 T1, bound X P |- sub (S2 n1) (T2 n1)}
============================
{L, bound X P |- sub (all S1 (x1\S2 x1)) (all T1 (x1\T2 x1))}
dual_theorem < search.
Proof completed.
Abella < Theorem transitivity :
forall L Q S T, ctx L -> ty Q -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}.
1 subgoal(s).
============================
forall L Q S T, ctx L -> ty Q -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
transitivity < intros.
1 subgoal(s).
Variables: L, Q, S, T
H1 : ctx L
H2 : ty Q
H3 : {L |- sub S Q}
H4 : {L |- sub Q T}
============================
{L |- sub S T}
transitivity < apply dual_theorem to H2.
1 subgoal(s).
Variables: L, Q, S, T
H1 : ctx L
H2 : ty Q
H3 : {L |- sub S Q}
H4 : {L |- sub Q T}
H5 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
H6 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
============================
{L |- sub S T}
transitivity < apply H5 to H1 H3 H4.
1 subgoal(s).
Variables: L, Q, S, T
H1 : ctx L
H2 : ty Q
H3 : {L |- sub S Q}
H4 : {L |- sub Q T}
H5 : forall L S T, ctx L -> {L |- sub S Q} -> {L |- sub Q T} ->
{L |- sub S T}
H6 : forall L P X TM TN, ctx (bound X Q :: L) -> {L |- sub P Q} ->
{L, bound X Q |- sub TM TN} -> {L, bound X P |- sub TM TN}
H7 : {L |- sub S T}
============================
{L |- sub S T}
transitivity < search.
Proof completed.
Abella < Goodbye.