Welcome to Abella 2.0.7-dev.
Abella < Specification "mallf".
Reading specification "mallf".
Abella < Type $pf pf -> o.
Abella < Type $natom atm -> o.
Abella < Define is_fm : o -> prop by
is_fm ($pf P) := exists N, {dual P N};
is_fm ($natom A).
Abella < Import "../../lib/merge" with is_o := is_fm.
Importing from "../../lib/merge".
Abella < Theorem $dual_det :
(forall P1 P2 N, {dual P1 N} -> {dual P2 N} -> P1 = P2) /\
(forall P N1 N2, {dual P N1} -> {dual P N2} -> N1 = N2).
============================
(forall P1 P2 N, {dual P1 N} -> {dual P2 N} -> P1 = P2) /\
(forall P N1 N2, {dual P N1} -> {dual P N2} -> N1 = N2)
$dual_det < IH1 : induction on 1 1.
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
(forall P1 P2 N, {dual P1 N}@ -> {dual P2 N} -> P1 = P2) /\
(forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2)
$dual_det < split.
Subgoal 1:
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
forall P1 P2 N, {dual P1 N}@ -> {dual P2 N} -> P1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < intros.
Subgoal 1:
Variables: P1 P2 N
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H1 : {dual P1 N}@
H2 : {dual P2 N}
============================
P1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < case H1.
Subgoal 1.1:
Variables: P2 A
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual P2 (natom A)}
============================
atom A = P2
Subgoal 1.2 is:
tens P Q = P2
Subgoal 1.3 is:
one = P2
Subgoal 1.4 is:
oplus P Q = P2
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < case H2.
Subgoal 1.1:
Variables: A
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
atom A = atom A
Subgoal 1.2 is:
tens P Q = P2
Subgoal 1.3 is:
one = P2
Subgoal 1.4 is:
oplus P Q = P2
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < search.
Subgoal 1.2:
Variables: P2 N1 Q M P
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual P2 (par M N1)}
H3 : {dual P M}*
H4 : {dual Q N1}*
============================
tens P Q = P2
Subgoal 1.3 is:
one = P2
Subgoal 1.4 is:
oplus P Q = P2
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < case H2.
Subgoal 1.2:
Variables: N1 Q M P Q1 P3
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H3 : {dual P M}*
H4 : {dual Q N1}*
H5 : {dual P3 M}
H6 : {dual Q1 N1}
============================
tens P Q = tens P3 Q1
Subgoal 1.3 is:
one = P2
Subgoal 1.4 is:
oplus P Q = P2
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < apply IH1 to *H3 *H5.
Subgoal 1.2:
Variables: N1 Q M Q1 P3
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H4 : {dual Q N1}*
H6 : {dual Q1 N1}
============================
tens P3 Q = tens P3 Q1
Subgoal 1.3 is:
one = P2
Subgoal 1.4 is:
oplus P Q = P2
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < apply *IH1 to *H4 *H6.
Subgoal 1.2:
Variables: N1 M Q1 P3
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
tens P3 Q1 = tens P3 Q1
Subgoal 1.3 is:
one = P2
Subgoal 1.4 is:
oplus P Q = P2
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < search.
Subgoal 1.3:
Variables: P2
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual P2 bot}
============================
one = P2
Subgoal 1.4 is:
oplus P Q = P2
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < case H2.
Subgoal 1.3:
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
one = one
Subgoal 1.4 is:
oplus P Q = P2
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < search.
Subgoal 1.4:
Variables: P2 N1 Q M P
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual P2 (with M N1)}
H3 : {dual P M}*
H4 : {dual Q N1}*
============================
oplus P Q = P2
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < case H2.
Subgoal 1.4:
Variables: N1 Q M P Q1 P3
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H3 : {dual P M}*
H4 : {dual Q N1}*
H5 : {dual P3 M}
H6 : {dual Q1 N1}
============================
oplus P Q = oplus P3 Q1
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < apply IH1 to *H3 *H5.
Subgoal 1.4:
Variables: N1 Q M Q1 P3
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H4 : {dual Q N1}*
H6 : {dual Q1 N1}
============================
oplus P3 Q = oplus P3 Q1
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < apply *IH1 to *H4 *H6.
Subgoal 1.4:
Variables: N1 M Q1 P3
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
oplus P3 Q1 = oplus P3 Q1
Subgoal 1.5 is:
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < search.
Subgoal 1.5:
Variables: P2
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual P2 top}
============================
zero = P2
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < case H2.
Subgoal 1.5:
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
zero = zero
Subgoal 1.6 is:
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < search.
Subgoal 1.6:
Variables: P2 N1 P
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual P2 (fall N1)}
H3 : {dual (P n1) (N1 n1)}*
============================
fex P = P2
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < case H2.
Subgoal 1.6:
Variables: N1 P P3
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H3 : {dual (P n1) (N1 n1)}*
H4 : {dual (P3 n1) (N1 n1)}
============================
fex P = fex P3
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < apply IH1 to *H3 *H4.
Subgoal 1.6:
Variables: N1 P3
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
fex (z1\P3 z1) = fex P3
Subgoal 1.7 is:
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < search.
Subgoal 1.7:
Variables: P2 N1 P
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual P2 (shn P)}
H3 : {dual P N1}*
============================
shp N1 = P2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < case H2.
Subgoal 1.7:
Variables: N1 P N2
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H3 : {dual P N1}*
H4 : {dual P N2}
============================
shp N1 = shp N2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < apply IH2 to *H3 *H4.
Subgoal 1.7:
Variables: P N2
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
shp N2 = shp N2
Subgoal 2 is:
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < search.
Subgoal 2:
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
forall P N1 N2, {dual P N1}@ -> {dual P N2} -> N1 = N2
$dual_det < intros.
Subgoal 2:
Variables: P N1 N2
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H1 : {dual P N1}@
H2 : {dual P N2}
============================
N1 = N2
$dual_det < case H1.
Subgoal 2.1:
Variables: N2 A
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual (atom A) N2}
============================
natom A = N2
Subgoal 2.2 is:
par M N = N2
Subgoal 2.3 is:
bot = N2
Subgoal 2.4 is:
with M N = N2
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < case H2.
Subgoal 2.1:
Variables: A
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
natom A = natom A
Subgoal 2.2 is:
par M N = N2
Subgoal 2.3 is:
bot = N2
Subgoal 2.4 is:
with M N = N2
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < search.
Subgoal 2.2:
Variables: N2 N Q M P1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual (tens P1 Q) N2}
H3 : {dual P1 M}*
H4 : {dual Q N}*
============================
par M N = N2
Subgoal 2.3 is:
bot = N2
Subgoal 2.4 is:
with M N = N2
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < case H2.
Subgoal 2.2:
Variables: N Q M P1 N3 M1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H3 : {dual P1 M}*
H4 : {dual Q N}*
H5 : {dual P1 M1}
H6 : {dual Q N3}
============================
par M N = par M1 N3
Subgoal 2.3 is:
bot = N2
Subgoal 2.4 is:
with M N = N2
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < apply IH2 to *H3 H5.
Subgoal 2.2:
Variables: N Q P1 N3 M1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H4 : {dual Q N}*
H5 : {dual P1 M1}
H6 : {dual Q N3}
============================
par M1 N = par M1 N3
Subgoal 2.3 is:
bot = N2
Subgoal 2.4 is:
with M N = N2
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < apply *IH2 to *H4 *H6.
Subgoal 2.2:
Variables: Q P1 N3 M1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
H5 : {dual P1 M1}
============================
par M1 N3 = par M1 N3
Subgoal 2.3 is:
bot = N2
Subgoal 2.4 is:
with M N = N2
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < search.
Subgoal 2.3:
Variables: N2
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual one N2}
============================
bot = N2
Subgoal 2.4 is:
with M N = N2
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < case H2.
Subgoal 2.3:
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
bot = bot
Subgoal 2.4 is:
with M N = N2
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < search.
Subgoal 2.4:
Variables: N2 N Q M P1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual (oplus P1 Q) N2}
H3 : {dual P1 M}*
H4 : {dual Q N}*
============================
with M N = N2
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < case H2.
Subgoal 2.4:
Variables: N Q M P1 N3 M1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H3 : {dual P1 M}*
H4 : {dual Q N}*
H5 : {dual P1 M1}
H6 : {dual Q N3}
============================
with M N = with M1 N3
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < apply IH2 to *H3 H5.
Subgoal 2.4:
Variables: N Q P1 N3 M1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H4 : {dual Q N}*
H5 : {dual P1 M1}
H6 : {dual Q N3}
============================
with M1 N = with M1 N3
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < apply *IH2 to *H4 *H6.
Subgoal 2.4:
Variables: Q P1 N3 M1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
H5 : {dual P1 M1}
============================
with M1 N3 = with M1 N3
Subgoal 2.5 is:
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < search.
Subgoal 2.5:
Variables: N2
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual zero N2}
============================
top = N2
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < case H2.
Subgoal 2.5:
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
top = top
Subgoal 2.6 is:
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < search.
Subgoal 2.6:
Variables: N2 N P1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual (fex P1) N2}
H3 : {dual (P1 n1) (N n1)}*
============================
fall N = N2
Subgoal 2.7 is:
shn P1 = N2
$dual_det < case H2.
Subgoal 2.6:
Variables: N P1 N3
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H3 : {dual (P1 n1) (N n1)}*
H4 : {dual (P1 n1) (N3 n1)}
============================
fall N = fall N3
Subgoal 2.7 is:
shn P1 = N2
$dual_det < apply IH2 to *H3 *H4.
Subgoal 2.6:
Variables: P1 N3
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
fall (z1\N3 z1) = fall N3
Subgoal 2.7 is:
shn P1 = N2
$dual_det < search.
Subgoal 2.7:
Variables: N2 N P1
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H2 : {dual (shp N) N2}
H3 : {dual P1 N}*
============================
shn P1 = N2
$dual_det < case H2.
Subgoal 2.7:
Variables: N P1 P2
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
H3 : {dual P1 N}*
H4 : {dual P2 N}
============================
shn P1 = shn P2
$dual_det < apply IH1 to *H3 *H4.
Subgoal 2.7:
Variables: N P2
IH1 : forall P1 P2 N, {dual P1 N}* -> {dual P2 N} -> P1 = P2
IH2 : forall P N1 N2, {dual P N1}* -> {dual P N2} -> N1 = N2
============================
shn P2 = shn P2
$dual_det < search.
Proof completed.
Abella < Split $dual_det as dual_det_1, dual_det_2.
Theorem dual_det_1 : forall P1 P2 N, {dual P1 N} -> {dual P2 N} -> P1 = P2.
Theorem dual_det_2 : forall P N1 N2, {dual P N1} -> {dual P N2} -> N1 = N2.
Abella < Define subf : foc -> pf -> prop by
subf (fatom A) (atom A);
subf (fshift N) (shp N) := exists P, {dual P N};
subf (fjoin F1 F2) (tens P Q) := subf F1 P /\ subf F2 Q;
subf F (oplus P Q) := subf F P;
subf F (oplus P Q) := subf F Q;
nabla x, subf (F x) (fex P) := nabla x, subf (F x) (P x);
subf femp one.
Abella < Define extension : foc -> (list o) -> prop by
extension (fatom A) ($natom A :: nil) := is_fm ($pf (atom A));
extension (fshift N) ($pf P :: nil) := {dual P N} /\ is_fm ($pf P);
extension (fjoin F1 F2) L := exists L1 L2, extension F1 L1 /\ extension F2 L2 /\ merge L1 L2 L;
extension femp nil.
Abella < Theorem extension_is :
forall F L, extension F L -> is_list L.
============================
forall F L, extension F L -> is_list L
extension_is < intros.
Variables: F L
H1 : extension F L
============================
is_list L
extension_is < case H1.
Subgoal 1:
Variables: A
H2 : is_fm ($pf (atom A))
============================
is_list ($natom A :: nil)
Subgoal 2 is:
is_list ($pf P :: nil)
Subgoal 3 is:
is_list L
Subgoal 4 is:
is_list nil
extension_is < search.
Subgoal 2:
Variables: P N
H2 : {dual P N}
H3 : is_fm ($pf P)
============================
is_list ($pf P :: nil)
Subgoal 3 is:
is_list L
Subgoal 4 is:
is_list nil
extension_is < search.
Subgoal 3:
Variables: L L2 L3 F2 F1
H2 : extension F1 L2
H3 : extension F2 L3
H4 : merge L2 L3 L
============================
is_list L
Subgoal 4 is:
is_list nil
extension_is < backchain merge_3_is_list.
Subgoal 4:
============================
is_list nil
extension_is < search.
Proof completed.
Abella < Theorem extension_exists :
forall F P, subf F P -> (exists L, extension F L).
============================
forall F P, subf F P -> (exists L, extension F L)
extension_exists < induction on 1.
IH : forall F P, subf F P * -> (exists L, extension F L)
============================
forall F P, subf F P @ -> (exists L, extension F L)
extension_exists < intros.
Variables: F P
IH : forall F P, subf F P * -> (exists L, extension F L)
H1 : subf F P @
============================
exists L, extension F L
extension_exists < case H1.
Subgoal 1:
Variables: A
IH : forall F P, subf F P * -> (exists L, extension F L)
============================
exists L, extension (fatom A) L
Subgoal 2 is:
exists L, extension (fshift N) L
Subgoal 3 is:
exists L, extension (fjoin F1 F2) L
Subgoal 4 is:
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < search.
Subgoal 2:
Variables: P1 N
IH : forall F P, subf F P * -> (exists L, extension F L)
H2 : {dual P1 N}
============================
exists L, extension (fshift N) L
Subgoal 3 is:
exists L, extension (fjoin F1 F2) L
Subgoal 4 is:
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < search.
Subgoal 3:
Variables: Q P1 F2 F1
IH : forall F P, subf F P * -> (exists L, extension F L)
H2 : subf F1 P1 *
H3 : subf F2 Q *
============================
exists L, extension (fjoin F1 F2) L
Subgoal 4 is:
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < apply IH to *H2.
Subgoal 3:
Variables: Q P1 F2 F1 L
IH : forall F P, subf F P * -> (exists L, extension F L)
H3 : subf F2 Q *
H4 : extension F1 L
============================
exists L, extension (fjoin F1 F2) L
Subgoal 4 is:
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < apply IH to *H3.
Subgoal 3:
Variables: Q P1 F2 F1 L L1
IH : forall F P, subf F P * -> (exists L, extension F L)
H4 : extension F1 L
H5 : extension F2 L1
============================
exists L, extension (fjoin F1 F2) L
Subgoal 4 is:
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < apply extension_is to H4.
Subgoal 3:
Variables: Q P1 F2 F1 L L1
IH : forall F P, subf F P * -> (exists L, extension F L)
H4 : extension F1 L
H5 : extension F2 L1
H6 : is_list L
============================
exists L, extension (fjoin F1 F2) L
Subgoal 4 is:
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < apply extension_is to H5.
Subgoal 3:
Variables: Q P1 F2 F1 L L1
IH : forall F P, subf F P * -> (exists L, extension F L)
H4 : extension F1 L
H5 : extension F2 L1
H6 : is_list L
H7 : is_list L1
============================
exists L, extension (fjoin F1 F2) L
Subgoal 4 is:
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < apply merge_exists to *H6 *H7.
Subgoal 3:
Variables: Q P1 F2 F1 L L1 L2
IH : forall F P, subf F P * -> (exists L, extension F L)
H4 : extension F1 L
H5 : extension F2 L1
H8 : merge L L1 L2
============================
exists L, extension (fjoin F1 F2) L
Subgoal 4 is:
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < search.
Subgoal 4:
Variables: F Q P1
IH : forall F P, subf F P * -> (exists L, extension F L)
H2 : subf F P1 *
============================
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < apply IH to *H2.
Subgoal 4:
Variables: F Q P1 L
IH : forall F P, subf F P * -> (exists L, extension F L)
H3 : extension F L
============================
exists L, extension F L
Subgoal 5 is:
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < search.
Subgoal 5:
Variables: F Q P1
IH : forall F P, subf F P * -> (exists L, extension F L)
H2 : subf F Q *
============================
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < apply IH to *H2.
Subgoal 5:
Variables: F Q P1 L
IH : forall F P, subf F P * -> (exists L, extension F L)
H3 : extension F L
============================
exists L, extension F L
Subgoal 6 is:
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < search.
Subgoal 6:
Variables: F P1
IH : forall F P, subf F P * -> (exists L, extension F L)
H2 : subf (F n1) (P1 n1) *
============================
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < apply IH to *H2.
Subgoal 6:
Variables: F P1 L
IH : forall F P, subf F P * -> (exists L, extension F L)
H3 : extension (F n1) (L n1)
============================
exists L, extension (F n1) L
Subgoal 7 is:
exists L, extension femp L
extension_exists < search.
Subgoal 7:
IH : forall F P, subf F P * -> (exists L, extension F L)
============================
exists L, extension femp L
extension_exists < search.
Proof completed.
Abella < Theorem extension_det :
forall F L1 L2, extension F L1 -> extension F L2 -> perm L1 L2.
============================
forall F L1 L2, extension F L1 -> extension F L2 -> perm L1 L2
extension_det < induction on 1.
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
============================
forall F L1 L2, extension F L1 @ -> extension F L2 -> perm L1 L2
extension_det < intros.
Variables: F L1 L2
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H1 : extension F L1 @
H2 : extension F L2
============================
perm L1 L2
extension_det < case H1.
Subgoal 1:
Variables: L2 A
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H2 : extension (fatom A) L2
H3 : is_fm ($pf (atom A))
============================
perm ($natom A :: nil) L2
Subgoal 2 is:
perm ($pf P :: nil) L2
Subgoal 3 is:
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < case H2.
Subgoal 1:
Variables: A
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H3 : is_fm ($pf (atom A))
H4 : is_fm ($pf (atom A))
============================
perm ($natom A :: nil) ($natom A :: nil)
Subgoal 2 is:
perm ($pf P :: nil) L2
Subgoal 3 is:
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < search.
Subgoal 2:
Variables: L2 P N
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H2 : extension (fshift N) L2
H3 : {dual P N}
H4 : is_fm ($pf P)
============================
perm ($pf P :: nil) L2
Subgoal 3 is:
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < case H2.
Subgoal 2:
Variables: P N P1
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H3 : {dual P N}
H4 : is_fm ($pf P)
H5 : {dual P1 N}
H6 : is_fm ($pf P1)
============================
perm ($pf P :: nil) ($pf P1 :: nil)
Subgoal 3 is:
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < apply dual_det_1 to *H5 H3.
Subgoal 2:
Variables: P N
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H3 : {dual P N}
H4 : is_fm ($pf P)
H6 : is_fm ($pf P)
============================
perm ($pf P :: nil) ($pf P :: nil)
Subgoal 3 is:
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < search.
Subgoal 3:
Variables: L1 L2 L3 L4 F2 F1
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H2 : extension (fjoin F1 F2) L2
H3 : extension F1 L3 *
H4 : extension F2 L4 *
H5 : merge L3 L4 L1
============================
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < case H2.
Subgoal 3:
Variables: L1 L2 L3 L4 F2 F1 L5 L6
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H3 : extension F1 L3 *
H4 : extension F2 L4 *
H5 : merge L3 L4 L1
H6 : extension F1 L5
H7 : extension F2 L6
H8 : merge L5 L6 L2
============================
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < apply IH to *H3 *H6.
Subgoal 3:
Variables: L1 L2 L3 L4 F2 F1 L5 L6
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H4 : extension F2 L4 *
H5 : merge L3 L4 L1
H7 : extension F2 L6
H8 : merge L5 L6 L2
H9 : perm L3 L5
============================
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < apply IH to *H4 *H7.
Subgoal 3:
Variables: L1 L2 L3 L4 F2 F1 L5 L6
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H5 : merge L3 L4 L1
H8 : merge L5 L6 L2
H9 : perm L3 L5
H10 : perm L4 L6
============================
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < apply perm_merge_1 to *H5 *H9.
Subgoal 3:
Variables: L1 L2 L3 L4 F2 F1 L5 L6
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H8 : merge L5 L6 L2
H10 : perm L4 L6
H11 : merge L5 L4 L1
============================
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < apply perm_merge_2 to *H11 *H10.
Subgoal 3:
Variables: L1 L2 L3 L4 F2 F1 L5 L6
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H8 : merge L5 L6 L2
H12 : merge L5 L6 L1
============================
perm L1 L2
Subgoal 4 is:
perm nil L2
extension_det < backchain merge_perm_det.
Subgoal 4:
Variables: L2
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
H2 : extension femp L2
============================
perm nil L2
extension_det < case H2.
Subgoal 4:
IH : forall F L1 L2, extension F L1 * -> extension F L2 -> perm L1 L2
============================
perm nil nil
extension_det < search.
Proof completed.
Abella < Define mall : (list o) -> prop,
mallfoc : (list o) -> foc -> prop by
mall L := exists P LL, adj LL ($pf P) L /\ (exists F, subf F P /\ mallfoc LL F);
mallfoc ($natom A :: nil) (fatom A);
mallfoc L (fshift N) := is_list L /\
(exists P, {dual P N} /\
(forall F, subf F P ->
(exists LE, extension F LE /\
(exists LL, merge L LE LL /\ mall LL))));
mallfoc L (fjoin F1 F2) := exists J K, merge J K L /\ mallfoc J F1 /\ mallfoc K F2;
mallfoc nil femp.
Abella < Theorem $mall_is :
(forall L, mall L -> is_list L) /\
(forall L F, mallfoc L F -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)).
============================
(forall L, mall L -> is_list L) /\
(forall L F, mallfoc L F -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P))
$mall_is < IH1 : induction on 1 1.
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
============================
(forall L, mall L @ -> is_list L) /\
(forall L F, mallfoc L F @ -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P))
$mall_is < split.
Subgoal 1:
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
============================
forall L, mall L @ -> is_list L
Subgoal 2 is:
forall L F, mallfoc L F @ -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
$mall_is < intros.
Subgoal 1:
Variables: L
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H1 : mall L @
============================
is_list L
Subgoal 2 is:
forall L F, mallfoc L F @ -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
$mall_is < case H1.
Subgoal 1:
Variables: L P LL F
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : adj LL ($pf P) L
H3 : subf F P
H4 : mallfoc LL F *
============================
is_list L
Subgoal 2 is:
forall L F, mallfoc L F @ -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
$mall_is < apply IH2 to *H4.
Subgoal 1:
Variables: L P LL F P1
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : adj LL ($pf P) L
H3 : subf F P
H5 : is_list LL
H6 : is_fm ($pf P1)
H7 : subf F P1
============================
is_list L
Subgoal 2 is:
forall L F, mallfoc L F @ -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
$mall_is < apply adj_3_is_list to *H2.
Subgoal 1:
Variables: L P LL F P1
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H3 : subf F P
H5 : is_list LL
H6 : is_fm ($pf P1)
H7 : subf F P1
H8 : is_list L
============================
is_list L
Subgoal 2 is:
forall L F, mallfoc L F @ -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
$mall_is < search.
Subgoal 2:
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
============================
forall L F, mallfoc L F @ -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
$mall_is < intros.
Subgoal 2:
Variables: L F
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H1 : mallfoc L F @
============================
is_list L /\ (exists P, is_fm ($pf P) /\ subf F P)
$mall_is < case H1.
Subgoal 2.1:
Variables: A
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
============================
is_list ($natom A :: nil) /\ (exists P, is_fm ($pf P) /\ subf (fatom A) P)
Subgoal 2.2 is:
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fshift N) P)
Subgoal 2.3 is:
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < search.
Subgoal 2.2:
Variables: L P N
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : is_list L
H3 : {dual P N}
H4 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL *))
============================
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fshift N) P)
Subgoal 2.3 is:
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < split.
Subgoal 2.2.1:
Variables: L P N
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : is_list L
H3 : {dual P N}
H4 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL *))
============================
is_list L
Subgoal 2.2.2 is:
exists P, is_fm ($pf P) /\ subf (fshift N) P
Subgoal 2.3 is:
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < search.
Subgoal 2.2.2:
Variables: L P N
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : is_list L
H3 : {dual P N}
H4 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL *))
============================
exists P, is_fm ($pf P) /\ subf (fshift N) P
Subgoal 2.3 is:
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < witness shp N.
Subgoal 2.2.2:
Variables: L P N
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : is_list L
H3 : {dual P N}
H4 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL *))
============================
is_fm ($pf (shp N)) /\ subf (fshift N) (shp N)
Subgoal 2.3 is:
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < split.
Subgoal 2.2.2.1:
Variables: L P N
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : is_list L
H3 : {dual P N}
H4 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL *))
============================
is_fm ($pf (shp N))
Subgoal 2.2.2.2 is:
subf (fshift N) (shp N)
Subgoal 2.3 is:
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < search.
Subgoal 2.2.2.2:
Variables: L P N
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : is_list L
H3 : {dual P N}
H4 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL *))
============================
subf (fshift N) (shp N)
Subgoal 2.3 is:
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < search.
Subgoal 2.3:
Variables: L J K F2 F1
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : merge J K L
H3 : mallfoc J F1 *
H4 : mallfoc K F2 *
============================
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < apply IH2 to *H3.
Subgoal 2.3:
Variables: L J K F2 F1 P
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : merge J K L
H4 : mallfoc K F2 *
H5 : is_list J
H6 : is_fm ($pf P)
H7 : subf F1 P
============================
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < apply IH2 to *H4.
Subgoal 2.3:
Variables: L J K F2 F1 P P1
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H2 : merge J K L
H5 : is_list J
H6 : is_fm ($pf P)
H7 : subf F1 P
H8 : is_list K
H9 : is_fm ($pf P1)
H10 : subf F2 P1
============================
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < apply merge_3_is_list to *H2.
Subgoal 2.3:
Variables: L J K F2 F1 P P1
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H5 : is_list J
H6 : is_fm ($pf P)
H7 : subf F1 P
H8 : is_list K
H9 : is_fm ($pf P1)
H10 : subf F2 P1
H11 : is_list L
============================
is_list L /\ (exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < split.
Subgoal 2.3.1:
Variables: L J K F2 F1 P P1
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H5 : is_list J
H6 : is_fm ($pf P)
H7 : subf F1 P
H8 : is_list K
H9 : is_fm ($pf P1)
H10 : subf F2 P1
H11 : is_list L
============================
is_list L
Subgoal 2.3.2 is:
exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < search.
Subgoal 2.3.2:
Variables: L J K F2 F1 P P1
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H5 : is_list J
H6 : is_fm ($pf P)
H7 : subf F1 P
H8 : is_list K
H9 : is_fm ($pf P1)
H10 : subf F2 P1
H11 : is_list L
============================
exists P, is_fm ($pf P) /\ subf (fjoin F1 F2) P
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < witness tens P P1.
Subgoal 2.3.2:
Variables: L J K F2 F1 P P1
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H5 : is_list J
H6 : is_fm ($pf P)
H7 : subf F1 P
H8 : is_list K
H9 : is_fm ($pf P1)
H10 : subf F2 P1
H11 : is_list L
============================
is_fm ($pf (tens P P1)) /\ subf (fjoin F1 F2) (tens P P1)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < case H6.
Subgoal 2.3.2:
Variables: L J K F2 F1 P P1 N
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H5 : is_list J
H7 : subf F1 P
H8 : is_list K
H9 : is_fm ($pf P1)
H10 : subf F2 P1
H11 : is_list L
H12 : {dual P N}
============================
is_fm ($pf (tens P P1)) /\ subf (fjoin F1 F2) (tens P P1)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < case H9.
Subgoal 2.3.2:
Variables: L J K F2 F1 P P1 N N1
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
H5 : is_list J
H7 : subf F1 P
H8 : is_list K
H10 : subf F2 P1
H11 : is_list L
H12 : {dual P N}
H13 : {dual P1 N1}
============================
is_fm ($pf (tens P P1)) /\ subf (fjoin F1 F2) (tens P P1)
Subgoal 2.4 is:
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < search.
Subgoal 2.4:
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
============================
is_list nil /\ (exists P, is_fm ($pf P) /\ subf femp P)
$mall_is < split.
Subgoal 2.4.1:
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
============================
is_list nil
Subgoal 2.4.2 is:
exists P, is_fm ($pf P) /\ subf femp P
$mall_is < search.
Subgoal 2.4.2:
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
============================
exists P, is_fm ($pf P) /\ subf femp P
$mall_is < witness one.
Subgoal 2.4.2:
IH1 : forall L, mall L * -> is_list L
IH2 : forall L F, mallfoc L F * -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P)
============================
is_fm ($pf one) /\ subf femp one
$mall_is < search.
Proof completed.
Abella < Split $mall_is as mall_is, mallfoc_is.
Theorem mall_is : forall L, mall L -> is_list L.
Theorem mallfoc_is :
forall L F, mallfoc L F -> is_list L /\
(exists P, is_fm ($pf P) /\ subf F P).
Abella < Theorem gid_lemma :
forall P N F L, {dual P N} -> subf F P -> extension F L -> mallfoc L F.
============================
forall P N F L, {dual P N} -> subf F P -> extension F L -> mallfoc L F
gid_lemma < induction on 1.
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
============================
forall P N F L, {dual P N}@ -> subf F P -> extension F L -> mallfoc L F
gid_lemma < intros.
Variables: P N F L
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H1 : {dual P N}@
H2 : subf F P
H3 : extension F L
============================
mallfoc L F
gid_lemma < case H1.
Subgoal 1:
Variables: F L A
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H2 : subf F (atom A)
H3 : extension F L
============================
mallfoc L F
Subgoal 2 is:
mallfoc L F
Subgoal 3 is:
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H2.
Subgoal 1:
Variables: L A
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H3 : extension (fatom A) L
============================
mallfoc L (fatom A)
Subgoal 2 is:
mallfoc L F
Subgoal 3 is:
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H3.
Subgoal 1:
Variables: A
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : is_fm ($pf (atom A))
============================
mallfoc ($natom A :: nil) (fatom A)
Subgoal 2 is:
mallfoc L F
Subgoal 3 is:
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H4.
Subgoal 1:
Variables: A N1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H5 : {dual (atom A) N1}
============================
mallfoc ($natom A :: nil) (fatom A)
Subgoal 2 is:
mallfoc L F
Subgoal 3 is:
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < search.
Subgoal 2:
Variables: F L N1 Q M P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H2 : subf F (tens P1 Q)
H3 : extension F L
H4 : {dual P1 M}*
H5 : {dual Q N1}*
============================
mallfoc L F
Subgoal 3 is:
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H2.
Subgoal 2:
Variables: L N1 Q M P1 F2 F1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H3 : extension (fjoin F1 F2) L
H4 : {dual P1 M}*
H5 : {dual Q N1}*
H6 : subf F1 P1
H7 : subf F2 Q
============================
mallfoc L (fjoin F1 F2)
Subgoal 3 is:
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H3.
Subgoal 2:
Variables: L N1 Q M P1 F2 F1 L2 L3
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 M}*
H5 : {dual Q N1}*
H6 : subf F1 P1
H7 : subf F2 Q
H8 : extension F1 L2
H9 : extension F2 L3
H10 : merge L2 L3 L
============================
mallfoc L (fjoin F1 F2)
Subgoal 3 is:
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < apply IH to *H4 *H6 *H8.
Subgoal 2:
Variables: L N1 Q M P1 F2 F1 L2 L3
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H5 : {dual Q N1}*
H7 : subf F2 Q
H9 : extension F2 L3
H10 : merge L2 L3 L
H11 : mallfoc L2 F1
============================
mallfoc L (fjoin F1 F2)
Subgoal 3 is:
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < apply IH to *H5 *H7 *H9.
Subgoal 2:
Variables: L N1 Q M P1 F2 F1 L2 L3
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H10 : merge L2 L3 L
H11 : mallfoc L2 F1
H12 : mallfoc L3 F2
============================
mallfoc L (fjoin F1 F2)
Subgoal 3 is:
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < search.
Subgoal 3:
Variables: F L
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H2 : subf F one
H3 : extension F L
============================
mallfoc L F
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H2.
Subgoal 3:
Variables: L
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H3 : extension femp L
============================
mallfoc L femp
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H3.
Subgoal 3:
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
============================
mallfoc nil femp
Subgoal 4 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < search.
Subgoal 4:
Variables: F L N1 Q M P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H2 : subf F (oplus P1 Q)
H3 : extension F L
H4 : {dual P1 M}*
H5 : {dual Q N1}*
============================
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H2.
Subgoal 4.1:
Variables: F L N1 Q M P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H3 : extension F L
H4 : {dual P1 M}*
H5 : {dual Q N1}*
H6 : subf F P1
============================
mallfoc L F
Subgoal 4.2 is:
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < backchain IH with P = P1.
Subgoal 4.2:
Variables: F L N1 Q M P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H3 : extension F L
H4 : {dual P1 M}*
H5 : {dual Q N1}*
H6 : subf F Q
============================
mallfoc L F
Subgoal 5 is:
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < backchain IH with P = Q.
Subgoal 5:
Variables: F L
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H2 : subf F zero
H3 : extension F L
============================
mallfoc L F
Subgoal 6 is:
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H2.
Subgoal 6:
Variables: F L N1 P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H2 : subf F (fex P1)
H3 : extension F L
H4 : {dual (P1 n1) (N1 n1)}*
============================
mallfoc L F
Subgoal 7 is:
mallfoc L F
gid_lemma < case H2.
Subgoal 6:
Variables: F L N1 P2
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H3 : extension (F n2) (L n2)
H4 : {dual (P2 n1) (N1 n2 n1)}*
H5 : subf (F n1) (P2 n1)
============================
mallfoc (L n2) (F n2)
Subgoal 7 is:
mallfoc L F
gid_lemma < permute (n1 n2) H3.
Subgoal 6:
Variables: F L N1 P2
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H3 : extension (F n1) (L n1)
H4 : {dual (P2 n1) (N1 n2 n1)}*
H5 : subf (F n1) (P2 n1)
============================
mallfoc (L n2) (F n2)
Subgoal 7 is:
mallfoc L F
gid_lemma < apply IH to *H4 *H5 *H3.
Subgoal 6:
Variables: F L N1 P2
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H6 : mallfoc (L n1) (F n1)
============================
mallfoc (L n2) (F n2)
Subgoal 7 is:
mallfoc L F
gid_lemma < search.
Subgoal 7:
Variables: F L N1 P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H2 : subf F (shp N1)
H3 : extension F L
H4 : {dual P1 N1}*
============================
mallfoc L F
gid_lemma < case H2.
Subgoal 7:
Variables: L N1 P1 P2
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H3 : extension (fshift N1) L
H4 : {dual P1 N1}*
H5 : {dual P2 N1}
============================
mallfoc L (fshift N1)
gid_lemma < case H3.
Subgoal 7:
Variables: N1 P1 P2 P3
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H5 : {dual P2 N1}
H6 : {dual P3 N1}
H7 : is_fm ($pf P3)
============================
mallfoc ($pf P3 :: nil) (fshift N1)
gid_lemma < apply dual_det_1 to *H6 H4.
Subgoal 7:
Variables: N1 P1 P2
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H5 : {dual P2 N1}
H7 : is_fm ($pf P1)
============================
mallfoc ($pf P1 :: nil) (fshift N1)
gid_lemma < apply dual_det_1 to *H5 H4.
Subgoal 7:
Variables: N1 P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
============================
mallfoc ($pf P1 :: nil) (fshift N1)
gid_lemma < unfold.
Subgoal 7.1:
Variables: N1 P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
============================
is_list ($pf P1 :: nil)
Subgoal 7.2 is:
exists P, {dual P N1} /\
(forall F, subf F P ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P1 :: nil) LE LL /\ mall LL)))
gid_lemma < search.
Subgoal 7.2:
Variables: N1 P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
============================
exists P, {dual P N1} /\
(forall F, subf F P ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P1 :: nil) LE LL /\ mall LL)))
gid_lemma < witness P1.
Subgoal 7.2:
Variables: N1 P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
============================
{dual P1 N1} /\
(forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P1 :: nil) LE LL /\ mall LL)))
gid_lemma < split.
Subgoal 7.2.1:
Variables: N1 P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
============================
{dual P1 N1}
Subgoal 7.2.2 is:
forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P1 :: nil) LE LL /\ mall LL))
gid_lemma < search.
Subgoal 7.2.2:
Variables: N1 P1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
============================
forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P1 :: nil) LE LL /\ mall LL))
gid_lemma < intros.
Subgoal 7.2.2:
Variables: N1 P1 F1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
============================
exists LE, extension F1 LE /\
(exists LL, merge ($pf P1 :: nil) LE LL /\ mall LL)
gid_lemma < apply extension_exists to H8.
Subgoal 7.2.2:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
============================
exists LE, extension F1 LE /\
(exists LL, merge ($pf P1 :: nil) LE LL /\ mall LL)
gid_lemma < witness L1.
Subgoal 7.2.2:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
============================
extension F1 L1 /\ (exists LL, merge ($pf P1 :: nil) L1 LL /\ mall LL)
gid_lemma < split.
Subgoal 7.2.2.1:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
============================
extension F1 L1
Subgoal 7.2.2.2 is:
exists LL, merge ($pf P1 :: nil) L1 LL /\ mall LL
gid_lemma < search.
Subgoal 7.2.2.2:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
============================
exists LL, merge ($pf P1 :: nil) L1 LL /\ mall LL
gid_lemma < apply IH to H4 H8 H9.
Subgoal 7.2.2.2:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
============================
exists LL, merge ($pf P1 :: nil) L1 LL /\ mall LL
gid_lemma < witness $pf P1 :: L1.
Subgoal 7.2.2.2:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
============================
merge ($pf P1 :: nil) L1 ($pf P1 :: L1) /\ mall ($pf P1 :: L1)
gid_lemma < split.
Subgoal 7.2.2.2.1:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
============================
merge ($pf P1 :: nil) L1 ($pf P1 :: L1)
Subgoal 7.2.2.2.2 is:
mall ($pf P1 :: L1)
gid_lemma < apply extension_is to H9.
Subgoal 7.2.2.2.1:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
H11 : is_list L1
============================
merge ($pf P1 :: nil) L1 ($pf P1 :: L1)
Subgoal 7.2.2.2.2 is:
mall ($pf P1 :: L1)
gid_lemma < apply merge_nil_equal to H11.
Subgoal 7.2.2.2.1:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
H11 : is_list L1
H12 : merge nil L1 L1
============================
merge ($pf P1 :: nil) L1 ($pf P1 :: L1)
Subgoal 7.2.2.2.2 is:
mall ($pf P1 :: L1)
gid_lemma < search.
Subgoal 7.2.2.2.2:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
============================
mall ($pf P1 :: L1)
gid_lemma < unfold.
Subgoal 7.2.2.2.2:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
============================
exists P LL, adj LL ($pf P) ($pf P1 :: L1) /\
(exists F, subf F P /\ mallfoc LL F)
gid_lemma < witness P1, L1.
Subgoal 7.2.2.2.2:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
============================
adj L1 ($pf P1) ($pf P1 :: L1) /\ (exists F, subf F P1 /\ mallfoc L1 F)
gid_lemma < split.
Subgoal 7.2.2.2.2.1:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
============================
adj L1 ($pf P1) ($pf P1 :: L1)
Subgoal 7.2.2.2.2.2 is:
exists F, subf F P1 /\ mallfoc L1 F
gid_lemma < apply extension_is to H9.
Subgoal 7.2.2.2.2.1:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
H11 : is_list L1
============================
adj L1 ($pf P1) ($pf P1 :: L1)
Subgoal 7.2.2.2.2.2 is:
exists F, subf F P1 /\ mallfoc L1 F
gid_lemma < apply merge_nil_equal to H11.
Subgoal 7.2.2.2.2.1:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
H11 : is_list L1
H12 : merge nil L1 L1
============================
adj L1 ($pf P1) ($pf P1 :: L1)
Subgoal 7.2.2.2.2.2 is:
exists F, subf F P1 /\ mallfoc L1 F
gid_lemma < search.
Subgoal 7.2.2.2.2.2:
Variables: N1 P1 F1 L1
IH : forall P N F L, {dual P N}* -> subf F P -> extension F L -> mallfoc L F
H4 : {dual P1 N1}*
H7 : is_fm ($pf P1)
H8 : subf F1 P1
H9 : extension F1 L1
H10 : mallfoc L1 F1
============================
exists F, subf F P1 /\ mallfoc L1 F
gid_lemma < search.
Proof completed.
Abella < Theorem gid :
forall P N, {dual P N} -> mall ($pf P :: $pf (shp N) :: nil).
============================
forall P N, {dual P N} -> mall ($pf P :: $pf (shp N) :: nil)
gid < intros.
Variables: P N
H1 : {dual P N}
============================
mall ($pf P :: $pf (shp N) :: nil)
gid < unfold.
Variables: P N
H1 : {dual P N}
============================
exists P1 LL, adj LL ($pf P1) ($pf P :: $pf (shp N) :: nil) /\
(exists F, subf F P1 /\ mallfoc LL F)
gid < witness shp N, $pf P :: nil.
Variables: P N
H1 : {dual P N}
============================
adj ($pf P :: nil) ($pf (shp N)) ($pf P :: $pf (shp N) :: nil) /\
(exists F, subf F (shp N) /\ mallfoc ($pf P :: nil) F)
gid < split.
Subgoal 1:
Variables: P N
H1 : {dual P N}
============================
adj ($pf P :: nil) ($pf (shp N)) ($pf P :: $pf (shp N) :: nil)
Subgoal 2 is:
exists F, subf F (shp N) /\ mallfoc ($pf P :: nil) F
gid < search.
Subgoal 2:
Variables: P N
H1 : {dual P N}
============================
exists F, subf F (shp N) /\ mallfoc ($pf P :: nil) F
gid < witness fshift N.
Subgoal 2:
Variables: P N
H1 : {dual P N}
============================
subf (fshift N) (shp N) /\ mallfoc ($pf P :: nil) (fshift N)
gid < split.
Subgoal 2.1:
Variables: P N
H1 : {dual P N}
============================
subf (fshift N) (shp N)
Subgoal 2.2 is:
mallfoc ($pf P :: nil) (fshift N)
gid < search.
Subgoal 2.2:
Variables: P N
H1 : {dual P N}
============================
mallfoc ($pf P :: nil) (fshift N)
gid < unfold.
Subgoal 2.2.1:
Variables: P N
H1 : {dual P N}
============================
is_list ($pf P :: nil)
Subgoal 2.2.2 is:
exists P1, {dual P1 N} /\
(forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P :: nil) LE LL /\ mall LL)))
gid < search.
Subgoal 2.2.2:
Variables: P N
H1 : {dual P N}
============================
exists P1, {dual P1 N} /\
(forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P :: nil) LE LL /\ mall LL)))
gid < witness P.
Subgoal 2.2.2:
Variables: P N
H1 : {dual P N}
============================
{dual P N} /\
(forall F, subf F P ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P :: nil) LE LL /\ mall LL)))
gid < split.
Subgoal 2.2.2.1:
Variables: P N
H1 : {dual P N}
============================
{dual P N}
Subgoal 2.2.2.2 is:
forall F, subf F P ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P :: nil) LE LL /\ mall LL))
gid < search.
Subgoal 2.2.2.2:
Variables: P N
H1 : {dual P N}
============================
forall F, subf F P ->
(exists LE, extension F LE /\
(exists LL, merge ($pf P :: nil) LE LL /\ mall LL))
gid < intros.
Subgoal 2.2.2.2:
Variables: P N F
H1 : {dual P N}
H2 : subf F P
============================
exists LE, extension F LE /\
(exists LL, merge ($pf P :: nil) LE LL /\ mall LL)
gid < apply extension_exists to H2.
Subgoal 2.2.2.2:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
============================
exists LE, extension F LE /\
(exists LL, merge ($pf P :: nil) LE LL /\ mall LL)
gid < witness L.
Subgoal 2.2.2.2:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
============================
extension F L /\ (exists LL, merge ($pf P :: nil) L LL /\ mall LL)
gid < split.
Subgoal 2.2.2.2.1:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
============================
extension F L
Subgoal 2.2.2.2.2 is:
exists LL, merge ($pf P :: nil) L LL /\ mall LL
gid < search.
Subgoal 2.2.2.2.2:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
============================
exists LL, merge ($pf P :: nil) L LL /\ mall LL
gid < witness $pf P :: L.
Subgoal 2.2.2.2.2:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
============================
merge ($pf P :: nil) L ($pf P :: L) /\ mall ($pf P :: L)
gid < apply extension_is to H3.
Subgoal 2.2.2.2.2:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
H4 : is_list L
============================
merge ($pf P :: nil) L ($pf P :: L) /\ mall ($pf P :: L)
gid < apply merge_nil_equal to H4.
Subgoal 2.2.2.2.2:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
H4 : is_list L
H5 : merge nil L L
============================
merge ($pf P :: nil) L ($pf P :: L) /\ mall ($pf P :: L)
gid < split.
Subgoal 2.2.2.2.2.1:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
H4 : is_list L
H5 : merge nil L L
============================
merge ($pf P :: nil) L ($pf P :: L)
Subgoal 2.2.2.2.2.2 is:
mall ($pf P :: L)
gid < search.
Subgoal 2.2.2.2.2.2:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
H4 : is_list L
H5 : merge nil L L
============================
mall ($pf P :: L)
gid < apply gid_lemma to H1 H2 H3.
Subgoal 2.2.2.2.2.2:
Variables: P N F L
H1 : {dual P N}
H2 : subf F P
H3 : extension F L
H4 : is_list L
H5 : merge nil L L
H6 : mallfoc L F
============================
mall ($pf P :: L)
gid < search.
Proof completed.
Abella < Theorem mallfoc_perm :
forall J F K, mallfoc J F -> perm J K -> mallfoc K F.
============================
forall J F K, mallfoc J F -> perm J K -> mallfoc K F
mallfoc_perm < intros.
Variables: J F K
H1 : mallfoc J F
H2 : perm J K
============================
mallfoc K F
mallfoc_perm < case H1.
Subgoal 1:
Variables: K A
H2 : perm ($natom A :: nil) K
============================
mallfoc K (fatom A)
Subgoal 2 is:
mallfoc K (fshift N)
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < apply perm_cons_1 to H2.
Subgoal 1:
Variables: K A J1
H2 : perm ($natom A :: nil) K
H3 : adj J1 ($natom A) K
H4 : perm nil J1
============================
mallfoc K (fatom A)
Subgoal 2 is:
mallfoc K (fshift N)
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < case H4.
Subgoal 1.1:
Variables: K A
H2 : perm ($natom A :: nil) K
H3 : adj nil ($natom A) K
============================
mallfoc K (fatom A)
Subgoal 1.2 is:
mallfoc K (fatom A)
Subgoal 2 is:
mallfoc K (fshift N)
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < case H3.
Subgoal 1.1:
Variables: A
H2 : perm ($natom A :: nil) ($natom A :: nil)
H5 : is_fm ($natom A)
H6 : is_list nil
============================
mallfoc ($natom A :: nil) (fatom A)
Subgoal 1.2 is:
mallfoc K (fatom A)
Subgoal 2 is:
mallfoc K (fshift N)
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < search.
Subgoal 1.2:
Variables: K A J1 A1 KK LL
H2 : perm ($natom A :: nil) K
H3 : adj J1 ($natom A) K
H5 : adj KK A1 nil
H6 : adj LL A1 J1
H7 : perm KK LL
============================
mallfoc K (fatom A)
Subgoal 2 is:
mallfoc K (fshift N)
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < case H5.
Subgoal 2:
Variables: J K P N
H2 : perm J K
H3 : is_list J
H4 : {dual P N}
H5 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge J LE LL /\ mall LL))
============================
mallfoc K (fshift N)
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < unfold.
Subgoal 2.1:
Variables: J K P N
H2 : perm J K
H3 : is_list J
H4 : {dual P N}
H5 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge J LE LL /\ mall LL))
============================
is_list K
Subgoal 2.2 is:
exists P, {dual P N} /\
(forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge K LE LL /\ mall LL)))
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < backchain perm_2_is_list.
Subgoal 2.2:
Variables: J K P N
H2 : perm J K
H3 : is_list J
H4 : {dual P N}
H5 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge J LE LL /\ mall LL))
============================
exists P, {dual P N} /\
(forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge K LE LL /\ mall LL)))
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < witness P.
Subgoal 2.2:
Variables: J K P N
H2 : perm J K
H3 : is_list J
H4 : {dual P N}
H5 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge J LE LL /\ mall LL))
============================
{dual P N} /\
(forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge K LE LL /\ mall LL)))
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < split.
Subgoal 2.2.1:
Variables: J K P N
H2 : perm J K
H3 : is_list J
H4 : {dual P N}
H5 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge J LE LL /\ mall LL))
============================
{dual P N}
Subgoal 2.2.2 is:
forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge K LE LL /\ mall LL))
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < search.
Subgoal 2.2.2:
Variables: J K P N
H2 : perm J K
H3 : is_list J
H4 : {dual P N}
H5 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge J LE LL /\ mall LL))
============================
forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge K LE LL /\ mall LL))
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < intros.
Subgoal 2.2.2:
Variables: J K P N F1
H2 : perm J K
H3 : is_list J
H4 : {dual P N}
H5 : forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge J LE LL /\ mall LL))
H6 : subf F1 P
============================
exists LE, extension F1 LE /\ (exists LL, merge K LE LL /\ mall LL)
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < apply *H5 to *H6.
Subgoal 2.2.2:
Variables: J K P N F1 LE LL
H2 : perm J K
H3 : is_list J
H4 : {dual P N}
H7 : extension F1 LE
H8 : merge J LE LL
H9 : mall LL
============================
exists LE, extension F1 LE /\ (exists LL, merge K LE LL /\ mall LL)
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < apply perm_merge_1 to *H8 *H2.
Subgoal 2.2.2:
Variables: J K P N F1 LE LL
H3 : is_list J
H4 : {dual P N}
H7 : extension F1 LE
H9 : mall LL
H10 : merge K LE LL
============================
exists LE, extension F1 LE /\ (exists LL, merge K LE LL /\ mall LL)
Subgoal 3 is:
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < search.
Subgoal 3:
Variables: J K J1 K1 F2 F1
H2 : perm J K
H3 : merge J1 K1 J
H4 : mallfoc J1 F1
H5 : mallfoc K1 F2
============================
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < apply perm_merge_3 to *H3 *H2.
Subgoal 3:
Variables: J K J1 K1 F2 F1
H4 : mallfoc J1 F1
H5 : mallfoc K1 F2
H6 : merge J1 K1 K
============================
mallfoc K (fjoin F1 F2)
Subgoal 4 is:
mallfoc K femp
mallfoc_perm < search.
Subgoal 4:
Variables: K
H2 : perm nil K
============================
mallfoc K femp
mallfoc_perm < case H2.
Subgoal 4.1:
============================
mallfoc nil femp
Subgoal 4.2 is:
mallfoc K femp
mallfoc_perm < search.
Subgoal 4.2:
Variables: K A KK LL
H3 : adj KK A nil
H4 : adj LL A K
H5 : perm KK LL
============================
mallfoc K femp
mallfoc_perm < case H3.
Proof completed.
Abella < Theorem mall_perm :
forall J K, mall J -> perm J K -> mall K.
============================
forall J K, mall J -> perm J K -> mall K
mall_perm < intros.
Variables: J K
H1 : mall J
H2 : perm J K
============================
mall K
mall_perm < case H1.
Variables: J K P LL F
H2 : perm J K
H3 : adj LL ($pf P) J
H4 : subf F P
H5 : mallfoc LL F
============================
mall K
mall_perm < apply adj_perm_full to H2 H3.
Variables: J K P LL F KK
H2 : perm J K
H3 : adj LL ($pf P) J
H4 : subf F P
H5 : mallfoc LL F
H6 : adj KK ($pf P) K
H7 : perm LL KK
============================
mall K
mall_perm < apply mallfoc_perm to *H5 H7.
Variables: J K P LL F KK
H2 : perm J K
H3 : adj LL ($pf P) J
H4 : subf F P
H6 : adj KK ($pf P) K
H7 : perm LL KK
H8 : mallfoc KK F
============================
mall K
mall_perm < search.
Proof completed.
Abella < Theorem $cut :
(forall P N J JP K L, {dual P N} -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN) ->
merge J K L -> mall L) /\
(forall P N F J K KE KN L, {dual P N} -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L) /\
(forall P N F J JP K L, {dual P N} -> adj J ($pf P) JP -> mallfoc JP F ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F).
============================
(forall P N J JP K L, {dual P N} -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L) /\
(forall P N F J K KE KN L, {dual P N} -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L) /\
(forall P N F J JP K L, {dual P N} -> adj J ($pf P) JP -> mallfoc JP F ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F)
$cut < IHrank1 : induction on 1 1 1.
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
============================
(forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L) /\
(forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L) /\
(forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F)
$cut < IHht1 : induction on 3 3 3.
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
============================
(forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP @@ ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L) /\
(forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L) /\
(forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F @@ ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F)
$cut < split.
Subgoal 1:
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
============================
forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP @@ ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN) ->
merge J K L -> mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < intros Hdual Hadj Hpos Hneg Hjk.
Subgoal 1:
Variables: P N J JP K L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hpos : mall JP @@
Hneg : forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN
Hjk : merge J K L
============================
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hpos1 : case Hpos.
Subgoal 1:
Variables: P N J JP K L P1 LL F
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN
Hjk : merge J K L
Hpos1 : adj LL ($pf P1) JP
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
============================
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hdiff : apply adj_same_result_diff_both to *Hadj *Hpos1.
Subgoal 1:
Variables: P N J JP K L P1 LL F
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN
Hjk : merge J K L
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff : $pf P = $pf P1 /\ perm J LL \/
(exists JJ KK, adj JJ ($pf P1) J /\ adj KK ($pf P) LL /\
perm JJ KK)
============================
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hdiff1 : case Hdiff.
Subgoal 1.1:
Variables: N J JP K L P1 LL F
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P1 N}@
Hneg : forall F KE KN, subf F P1 -> extension F KE -> merge K KE KN ->
mall KN
Hjk : merge J K L
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff1 : perm J LL
============================
mall L
Subgoal 1.2 is:
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hex : apply extension_exists to Hpos2.
Subgoal 1.1:
Variables: N J JP K L P1 LL F L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P1 N}@
Hneg : forall F KE KN, subf F P1 -> extension F KE -> merge K KE KN ->
mall KN
Hjk : merge J K L
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff1 : perm J LL
Hex : extension F L1
============================
mall L
Subgoal 1.2 is:
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Ht1 : apply merge_2_is_list to Hjk.
Subgoal 1.1:
Variables: N J JP K L P1 LL F L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P1 N}@
Hneg : forall F KE KN, subf F P1 -> extension F KE -> merge K KE KN ->
mall KN
Hjk : merge J K L
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff1 : perm J LL
Hex : extension F L1
Ht1 : is_list K
============================
mall L
Subgoal 1.2 is:
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Ht2 : apply extension_is to Hex.
Subgoal 1.1:
Variables: N J JP K L P1 LL F L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P1 N}@
Hneg : forall F KE KN, subf F P1 -> extension F KE -> merge K KE KN ->
mall KN
Hjk : merge J K L
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff1 : perm J LL
Hex : extension F L1
Ht1 : is_list K
Ht2 : is_list L1
============================
mall L
Subgoal 1.2 is:
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr : apply merge_exists to *Ht1 *Ht2.
Subgoal 1.1:
Variables: N J JP K L P1 LL F L1 L2
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P1 N}@
Hneg : forall F KE KN, subf F P1 -> extension F KE -> merge K KE KN ->
mall KN
Hjk : merge J K L
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff1 : perm J LL
Hex : extension F L1
Hmr : merge K L1 L2
============================
mall L
Subgoal 1.2 is:
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hn : apply *Hneg to Hpos2 Hex Hmr.
Subgoal 1.1:
Variables: N J JP K L P1 LL F L1 L2
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P1 N}@
Hjk : merge J K L
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff1 : perm J LL
Hex : extension F L1
Hmr : merge K L1 L2
Hn : mall L2
============================
mall L
Subgoal 1.2 is:
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hperm : apply perm_merge_1 to *Hjk *Hdiff1.
Subgoal 1.1:
Variables: N J JP K L P1 LL F L1 L2
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P1 N}@
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hex : extension F L1
Hmr : merge K L1 L2
Hn : mall L2
Hperm : merge LL K L
============================
mall L
Subgoal 1.2 is:
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain IHht2.
Subgoal 1.2:
Variables: P N J JP K L P1 LL F JJ KK
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN
Hjk : merge J K L
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff1 : adj JJ ($pf P1) J
Hdiff2 : adj KK ($pf P) LL
Hdiff3 : perm JJ KK
============================
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr1 : apply merge_unadj_1 to *Hjk *Hdiff1.
Subgoal 1.2:
Variables: P N J JP K L P1 LL F JJ KK LL1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff2 : adj KK ($pf P) LL
Hdiff3 : perm JJ KK
Hmr1 : adj LL1 ($pf P1) L
Hmr2 : merge JJ K LL1
============================
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hp1 : apply perm_merge_1 to *Hmr2 *Hdiff3.
Subgoal 1.2:
Variables: P N J JP K L P1 LL F JJ KK LL1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN
Hpos2 : subf F P1
Hpos3 : mallfoc LL F **
Hdiff2 : adj KK ($pf P) LL
Hmr1 : adj LL1 ($pf P1) L
Hp1 : merge KK K LL1
============================
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply IHht3 to *Hdual *Hdiff2 *Hpos3 *Hneg *Hp1.
Subgoal 1.2:
Variables: P N J JP K L P1 LL F JJ KK LL1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos2 : subf F P1
Hmr1 : adj LL1 ($pf P1) L
H1 : mallfoc LL1 F
============================
mall L
Subgoal 2 is:
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < search.
Subgoal 2:
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
============================
forall P N F J K KE KN L, {dual P N}@ -> subf F P -> mallfoc J F @@ ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < intros Hdual Hsubf Hpos Hex Hexmr Hneg Hmr.
Subgoal 2:
Variables: P N F J K KE KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hsubf : subf F P
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hdual1 : case Hdual.
Subgoal 2.1:
Variables: F J K KE KN L A
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hsubf : subf F (atom A)
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
============================
mall L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < case Hsubf.
Subgoal 2.1:
Variables: J K KE KN L A
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : mallfoc J (fatom A) @@
Hex : extension (fatom A) KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
============================
mall L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < case Hpos.
Subgoal 2.1:
Variables: K KE KN L A
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hex : extension (fatom A) KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge ($natom A :: nil) K L
============================
mall L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < case Hex.
Subgoal 2.1:
Variables: K KN L A
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($natom A :: nil) KN
Hneg : mall KN
Hmr : merge ($natom A :: nil) K L
H1 : is_fm ($pf (atom A))
============================
mall L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr : apply merge_sym to *Hmr.
Subgoal 2.1:
Variables: K KN L A
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($natom A :: nil) KN
Hneg : mall KN
H1 : is_fm ($pf (atom A))
Hmr : merge K ($natom A :: nil) L
============================
mall L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply merge_perm_det to *Hexmr *Hmr.
Subgoal 2.1:
Variables: K KN L A
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hneg : mall KN
H1 : is_fm ($pf (atom A))
H2 : perm KN L
============================
mall L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain mall_perm.
Subgoal 2.2:
Variables: F J K KE KN L N1 Q M P1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hsubf : subf F (tens P1 Q)
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hsubf1 : case Hsubf.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : mallfoc J (fjoin F1 F2) @@
Hex : extension (fjoin F1 F2) KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hpos : case Hpos.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hex : extension (fjoin F1 F2) KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hex1 : case Hex.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex3 : merge L2 L3 KE
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < rename Hex3 to Hex.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hn : assert 0 exists U, merge K L2 U /\ merge U L3 KN.
Subgoal 2.2.1:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
============================
exists U, merge K L2 U /\ merge U L3 KN
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply merge_2_is_list to Hmr.
Subgoal 2.2.1:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
H1 : is_list K
============================
exists U, merge K L2 U /\ merge U L3 KN
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply merge_1_is_list to Hex.
Subgoal 2.2.1:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
H1 : is_list K
H2 : is_list L2
============================
exists U, merge K L2 U /\ merge U L3 KN
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply merge_exists to *H1 *H2.
Subgoal 2.2.1:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
H3 : merge K L2 L1
============================
exists U, merge K L2 U /\ merge U L3 KN
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < witness L1.
Subgoal 2.2.1:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
H3 : merge K L2 L1
============================
merge K L2 L1 /\ merge L1 L3 KN
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < split.
Subgoal 2.2.1.1:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
H3 : merge K L2 L1
============================
merge K L2 L1
Subgoal 2.2.1.2 is:
merge L1 L3 KN
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < search.
Subgoal 2.2.1.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
H3 : merge K L2 L1
============================
merge L1 L3 KN
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain change_merge_order2.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
Hn : exists U, merge K L2 U /\ merge U L3 KN
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr1 : case Hn.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hn : assert 0 exists V, merge K1 U V.
Subgoal 2.2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
============================
exists V, merge K1 U V
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain merge_exists.
Subgoal 2.2.2.1:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
============================
is_list K1
Subgoal 2.2.2.2 is:
is_list U
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain merge_2_is_list.
Subgoal 2.2.2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
============================
is_list U
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain merge_1_is_list.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hn : exists V, merge K1 U V
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr1 : case Hn.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf1 : subf F1 P1
Hsubf2 : subf F2 Q
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hex1 : extension F1 L2
Hex2 : extension F2 L3
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hneg : apply IHrank2 to *Hdual2 *Hsubf2 *Hpos2 *Hex2 Hmr2 *Hneg Hmr3.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hn : assert 0 exists W, merge K1 K W /\ merge J1 W L.
Subgoal 2.2.3:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
============================
exists W, merge K1 K W /\ merge J1 W L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hl1 : apply merge_2_is_list to Hpos.
Subgoal 2.2.3:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hl1 : is_list K1
============================
exists W, merge K1 K W /\ merge J1 W L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hl1 : apply merge_1_is_list to Hmr1.
Subgoal 2.2.3:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hl1 : is_list K1
Hl2 : is_list K
============================
exists W, merge K1 K W /\ merge J1 W L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hn : apply merge_exists to *Hl1 *Hl2.
Subgoal 2.2.3:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hn : merge K1 K L1
============================
exists W, merge K1 K W /\ merge J1 W L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < witness L1.
Subgoal 2.2.3:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hn : merge K1 K L1
============================
merge K1 K L1 /\ merge J1 L1 L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < split.
Subgoal 2.2.3.1:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hn : merge K1 K L1
============================
merge K1 K L1
Subgoal 2.2.3.2 is:
merge J1 L1 L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < search.
Subgoal 2.2.3.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V L1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hn : merge K1 K L1
============================
merge J1 L1 L
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain change_merge_order.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hn : exists W, merge K1 K W /\ merge J1 W L
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr1 : case Hn.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V W
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hmr4 : merge K1 K W
Hmr5 : merge J1 W L
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr1 : assert 0 merge W L2 V.
Subgoal 2.2.4:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V W
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hmr4 : merge K1 K W
Hmr5 : merge J1 W L
============================
merge W L2 V
Subgoal 2.2 is:
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain change_merge_order2.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V W
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hsubf1 : subf F1 P1
Hpos : merge J1 K1 J
Hpos1 : mallfoc J1 F1 **
Hex1 : extension F1 L2
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hneg : mall V
Hmr4 : merge K1 K W
Hmr5 : merge J1 W L
Hmr6 : merge W L2 V
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hneg : apply IHrank2 to *Hdual1 *Hsubf1 *Hpos1 *Hex1 Hmr6 *Hneg Hmr5.
Subgoal 2.2:
Variables: J K KE KN L N1 Q M P1 F2 F1 J1 K1 L2 L3 U V W
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K KE KN
Hmr : merge J K L
Hpos : merge J1 K1 J
Hex : merge L2 L3 KE
Hmr1 : merge K L2 U
Hmr2 : merge U L3 KN
Hmr3 : merge K1 U V
Hmr4 : merge K1 K W
Hmr5 : merge J1 W L
Hmr6 : merge W L2 V
Hneg : mall L
============================
mall L
Subgoal 2.3 is:
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < search.
Subgoal 2.3:
Variables: F J K KE KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hsubf : subf F one
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
============================
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < case Hsubf.
Subgoal 2.3:
Variables: J K KE KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : mallfoc J femp @@
Hex : extension femp KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
============================
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < case Hpos.
Subgoal 2.3:
Variables: K KE KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hex : extension femp KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge nil K L
============================
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < case Hex.
Subgoal 2.3:
Variables: K KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K nil KN
Hneg : mall KN
Hmr : merge nil K L
============================
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hexmr : apply merge_sym to *Hexmr.
Subgoal 2.3:
Variables: K KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hneg : mall KN
Hmr : merge nil K L
Hexmr : merge nil K KN
============================
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hp : apply merge_nil_perm to *Hmr.
Subgoal 2.3:
Variables: K KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hneg : mall KN
Hexmr : merge nil K KN
Hp : perm K L
============================
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr : apply perm_merge_2 to *Hexmr *Hp.
Subgoal 2.3:
Variables: K KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hneg : mall KN
Hmr : merge nil L KN
============================
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hp : apply merge_nil_perm to *Hmr.
Subgoal 2.3:
Variables: K KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hneg : mall KN
Hp : perm L KN
============================
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hp : apply perm_sym to *Hp.
Subgoal 2.3:
Variables: K KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hneg : mall KN
Hp : perm KN L
============================
mall L
Subgoal 2.4 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain mall_perm.
Subgoal 2.4:
Variables: F J K KE KN L N1 Q M P1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hsubf : subf F (oplus P1 Q)
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
============================
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hsubf : case Hsubf.
Subgoal 2.4.1:
Variables: F J K KE KN L N1 Q M P1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf : subf F P1
============================
mall L
Subgoal 2.4.2 is:
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain IHrank2.
Subgoal 2.4.2:
Variables: F J K KE KN L N1 Q M P1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 M}*
Hdual2 : {dual Q N1}*
Hsubf : subf F Q
============================
mall L
Subgoal 2.5 is:
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain IHrank2 with P = Q.
Subgoal 2.5:
Variables: F J K KE KN L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hsubf : subf F zero
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
============================
mall L
Subgoal 2.6 is:
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < case Hsubf.
Subgoal 2.6:
Variables: F J K KE KN L N1 P1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hsubf : subf F (fex P1)
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual (P1 n1) (N1 n1)}*
============================
mall L
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hsubf : case Hsubf.
Subgoal 2.6:
Variables: F J K KE KN L N1 P2
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : mallfoc (J n2) (F n2) @@
Hex : extension (F n2) (KE n2)
Hexmr : merge (K n2) (KE n2) (KN n2)
Hneg : mall (KN n2)
Hmr : merge (J n2) (K n2) (L n2)
Hdual1 : {dual (P2 n1) (N1 n2 n1)}*
Hsubf : subf (F n1) (P2 n1)
============================
mall (L n2)
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < permute (n1 n2) Hdual1.
Subgoal 2.6:
Variables: F J K KE KN L N1 P2
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : mallfoc (J n2) (F n2) @@
Hex : extension (F n2) (KE n2)
Hexmr : merge (K n2) (KE n2) (KN n2)
Hneg : mall (KN n2)
Hmr : merge (J n2) (K n2) (L n2)
Hdual1 : {dual (P2 n2) (N1 n1 n2)}*
Hsubf : subf (F n1) (P2 n1)
============================
mall (L n2)
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < permute (n1 n2) Hsubf.
Subgoal 2.6:
Variables: F J K KE KN L N1 P2
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : mallfoc (J n2) (F n2) @@
Hex : extension (F n2) (KE n2)
Hexmr : merge (K n2) (KE n2) (KN n2)
Hneg : mall (KN n2)
Hmr : merge (J n2) (K n2) (L n2)
Hdual1 : {dual (P2 n2) (N1 n1 n2)}*
Hsubf : subf (F n2) (P2 n2)
============================
mall (L n2)
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply IHrank2 to *Hdual1 *Hsubf *Hpos *Hex *Hexmr *Hneg *Hmr.
Subgoal 2.6:
Variables: F J K KE KN L N1 P2
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
H1 : mall (L n2)
============================
mall (L n2)
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < search.
Subgoal 2.7:
Variables: F J K KE KN L N1 P1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hsubf : subf F (shp N1)
Hpos : mallfoc J F @@
Hex : extension F KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hsubf : case Hsubf.
Subgoal 2.7:
Variables: J K KE KN L N1 P1 P2
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : mallfoc J (fshift N1) @@
Hex : extension (fshift N1) KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hsubf : {dual P2 N1}
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hpos : case Hpos.
Subgoal 2.7:
Variables: J K KE KN L N1 P1 P2 P3
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hex : extension (fshift N1) KE
Hexmr : merge K KE KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hsubf : {dual P2 N1}
Hpos : is_list J
Hpos1 : {dual P3 N1}
Hpos2 : forall F, subf F P3 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hex : case Hex.
Subgoal 2.7:
Variables: J K KN L N1 P1 P2 P3 P4
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P4 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hsubf : {dual P2 N1}
Hpos : is_list J
Hpos1 : {dual P3 N1}
Hpos2 : forall F, subf F P3 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex : {dual P4 N1}
Hex1 : is_fm ($pf P4)
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply dual_det_1 to *Hsubf Hdual1.
Subgoal 2.7:
Variables: J K KN L N1 P1 P3 P4
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P4 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos1 : {dual P3 N1}
Hpos2 : forall F, subf F P3 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex : {dual P4 N1}
Hex1 : is_fm ($pf P4)
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply dual_det_1 to *Hpos1 Hdual1.
Subgoal 2.7:
Variables: J K KN L N1 P1 P4
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P4 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex : {dual P4 N1}
Hex1 : is_fm ($pf P4)
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply dual_det_1 to *Hex Hdual1.
Subgoal 2.7:
Variables: J K KN L N1 P1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hadj : assert 0 exists U, adj K ($pf P1) U /\ perm KN U.
Subgoal 2.7.1:
Variables: J K KN L N1 P1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
============================
exists U, adj K ($pf P1) U /\ perm KN U
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hn1 : apply merge_unadj_2 to Hexmr _.
Subgoal 2.7.1:
Variables: J K KN L N1 P1 LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hn1 : adj LL ($pf P1) KN
Hn2 : merge K nil LL
============================
exists U, adj K ($pf P1) U /\ perm KN U
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hn1 : apply merge_sym to *Hn2.
Subgoal 2.7.1:
Variables: J K KN L N1 P1 LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hn1 : adj LL ($pf P1) KN
Hn2 : merge nil K LL
============================
exists U, adj K ($pf P1) U /\ perm KN U
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hp : apply merge_nil_perm to *Hn2.
Subgoal 2.7.1:
Variables: J K KN L N1 P1 LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hn1 : adj LL ($pf P1) KN
Hp : perm K LL
============================
exists U, adj K ($pf P1) U /\ perm KN U
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hp : apply perm_sym to *Hp.
Subgoal 2.7.1:
Variables: J K KN L N1 P1 LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hn1 : adj LL ($pf P1) KN
Hp : perm LL K
============================
exists U, adj K ($pf P1) U /\ perm KN U
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hp : apply adj_perm_source to *Hp *Hn1.
Subgoal 2.7.1:
Variables: J K KN L N1 P1 LL LL1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hp : adj K ($pf P1) LL1
Hp1 : perm KN LL1
============================
exists U, adj K ($pf P1) U /\ perm KN U
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < search.
Subgoal 2.7:
Variables: J K KN L N1 P1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hadj : exists U, adj K ($pf P1) U /\ perm KN U
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hadj : case Hadj.
Subgoal 2.7:
Variables: J K KN L N1 P1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hneg : mall KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hadj1 : perm KN U
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hneg : apply mall_perm to *Hneg *Hadj1.
Subgoal 2.7:
Variables: J K KN L N1 P1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hmr : merge J K L
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hneg : mall U
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr : apply merge_sym to *Hmr.
Subgoal 2.7:
Variables: J K KN L N1 P1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hneg : mall U
Hmr : merge K J L
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hfa : assert forall F KE KN, subf F P1 -> extension F KE -> merge J KE KN -> mall KN.
Subgoal 2.7.2:
Variables: J K KN L N1 P1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hneg : mall U
Hmr : merge K J L
============================
forall F KE KN, subf F P1 -> extension F KE -> merge J KE KN -> mall KN
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < intros Hsubf Hex Hmr.
Subgoal 2.7.2:
Variables: J K KN L N1 P1 U F1 KE1 KN1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hneg : mall U
Hmr : merge K J L
Hsubf : subf F1 P1
Hex : extension F1 KE1
Hmr1 : merge J KE1 KN1
============================
mall KN1
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hpos1 : apply *Hpos2 to *Hsubf.
Subgoal 2.7.2:
Variables: J K KN L N1 P1 U F1 KE1 KN1 LE LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hneg : mall U
Hmr : merge K J L
Hex : extension F1 KE1
Hmr1 : merge J KE1 KN1
Hpos1 : extension F1 LE
Hpos2 : merge J LE LL
Hpos3 : mall LL **
============================
mall KN1
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hp : apply extension_det to *Hex *Hpos1.
Subgoal 2.7.2:
Variables: J K KN L N1 P1 U F1 KE1 KN1 LE LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hneg : mall U
Hmr : merge K J L
Hmr1 : merge J KE1 KN1
Hpos2 : merge J LE LL
Hpos3 : mall LL **
Hp : perm KE1 LE
============================
mall KN1
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hmr1 : apply perm_merge_2 to *Hmr1 *Hp.
Subgoal 2.7.2:
Variables: J K KN L N1 P1 U F1 KE1 KN1 LE LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hneg : mall U
Hmr : merge K J L
Hpos2 : merge J LE LL
Hpos3 : mall LL **
Hmr1 : merge J LE KN1
============================
mall KN1
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < Hp : apply merge_perm_det to *Hpos2 *Hmr1.
Subgoal 2.7.2:
Variables: J K KN L N1 P1 U F1 KE1 KN1 LE LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hneg : mall U
Hmr : merge K J L
Hpos3 : mall LL **
Hp : perm LL KN1
============================
mall KN1
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < clear Hneg.
Subgoal 2.7.2:
Variables: J K KN L N1 P1 U F1 KE1 KN1 LE LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hmr : merge K J L
Hpos3 : mall LL **
Hp : perm LL KN1
============================
mall KN1
Subgoal 2.7 is:
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < backchain mall_perm.
Subgoal 2.7:
Variables: J K KN L N1 P1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hdual1 : {dual P1 N1}*
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
Hadj : adj K ($pf P1) U
Hneg : mall U
Hmr : merge K J L
Hfa : forall F KE KN, subf F P1 -> extension F KE -> merge J KE KN -> mall KN
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < apply IHrank1 to *Hdual1 *Hadj *Hneg *Hfa *Hmr.
Subgoal 2.7:
Variables: J K KN L N1 P1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hexmr : merge K ($pf P1 :: nil) KN
Hpos : is_list J
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge J LE LL /\ mall LL **))
Hex1 : is_fm ($pf P1)
H1 : mall L
============================
mall L
Subgoal 3 is:
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < search.
Subgoal 3:
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
============================
forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mallfoc JP F @@ ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
$cut < intros Hdual Hadj Hpos Hneg Hmr.
Subgoal 3:
Variables: P N F J JP K L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hpos : mallfoc JP F @@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
============================
mallfoc L F
$cut < Hpos : case Hpos.
Subgoal 3.1:
Variables: P N J K L A
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) ($natom A :: nil)
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
============================
mallfoc L (fatom A)
Subgoal 3.2 is:
mallfoc L (fshift N1)
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hadj : case Hadj.
Subgoal 3.1:
Variables: P N K L A K1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge ($natom A :: K1) K L
Hadj : is_fm ($natom A)
Hadj1 : adj K1 ($pf P) nil
============================
mallfoc L (fatom A)
Subgoal 3.2 is:
mallfoc L (fshift N1)
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < case Hadj1.
Subgoal 3.2:
Variables: P N J JP K L P1 N1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge JP LE LL /\ mall LL **))
============================
mallfoc L (fshift N1)
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < unfold 3.
Subgoal 3.2.1:
Variables: P N J JP K L P1 N1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge JP LE LL /\ mall LL **))
============================
is_list L
Subgoal 3.2.2 is:
exists P, {dual P N1} /\
(forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL)))
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_3_is_list.
Subgoal 3.2.2:
Variables: P N J JP K L P1 N1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge JP LE LL /\ mall LL **))
============================
exists P, {dual P N1} /\
(forall F, subf F P ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL)))
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < witness P1.
Subgoal 3.2.2:
Variables: P N J JP K L P1 N1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge JP LE LL /\ mall LL **))
============================
{dual P1 N1} /\
(forall F, subf F P1 ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL)))
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < split.
Subgoal 3.2.2.1:
Variables: P N J JP K L P1 N1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge JP LE LL /\ mall LL **))
============================
{dual P1 N1}
Subgoal 3.2.2.2 is:
forall F, subf F P1 ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL))
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < search.
Subgoal 3.2.2.2:
Variables: P N J JP K L P1 N1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge JP LE LL /\ mall LL **))
============================
forall F, subf F P1 ->
(exists LE, extension F LE /\ (exists LL, merge L LE LL /\ mall LL))
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < intros Hsubf.
Subgoal 3.2.2.2:
Variables: P N J JP K L P1 N1 F1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : forall F, subf F P1 ->
(exists LE, extension F LE /\
(exists LL, merge JP LE LL /\ mall LL **))
Hsubf : subf F1 P1
============================
exists LE, extension F1 LE /\ (exists LL, merge L LE LL /\ mall LL)
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hpos1 : apply *Hpos2 to *Hsubf.
Subgoal 3.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos3 : merge JP LE LL
Hpos4 : mall LL **
============================
exists LE, extension F1 LE /\ (exists LL, merge L LE LL /\ mall LL)
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < witness LE.
Subgoal 3.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos3 : merge JP LE LL
Hpos4 : mall LL **
============================
extension F1 LE /\ (exists LL, merge L LE LL /\ mall LL)
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < split.
Subgoal 3.2.2.2.1:
Variables: P N J JP K L P1 N1 F1 LE LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos3 : merge JP LE LL
Hpos4 : mall LL **
============================
extension F1 LE
Subgoal 3.2.2.2.2 is:
exists LL, merge L LE LL /\ mall LL
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < search.
Subgoal 3.2.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos3 : merge JP LE LL
Hpos4 : mall LL **
============================
exists LL, merge L LE LL /\ mall LL
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hpos1 : apply merge_unadj_1 to *Hpos3 *Hadj.
Subgoal 3.2.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL LL1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos4 : mall LL **
Hpos3 : adj LL1 ($pf P) LL
Hpos5 : merge J LE LL1
============================
exists LL, merge L LE LL /\ mall LL
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hn : assert 0 exists U, merge LL1 K U.
Subgoal 3.2.2.2.2.1:
Variables: P N J JP K L P1 N1 F1 LE LL LL1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos4 : mall LL **
Hpos3 : adj LL1 ($pf P) LL
Hpos5 : merge J LE LL1
============================
exists U, merge LL1 K U
Subgoal 3.2.2.2.2 is:
exists LL, merge L LE LL /\ mall LL
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_exists.
Subgoal 3.2.2.2.2.1.1:
Variables: P N J JP K L P1 N1 F1 LE LL LL1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos4 : mall LL **
Hpos3 : adj LL1 ($pf P) LL
Hpos5 : merge J LE LL1
============================
is_list LL1
Subgoal 3.2.2.2.2.1.2 is:
is_list K
Subgoal 3.2.2.2.2 is:
exists LL, merge L LE LL /\ mall LL
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_3_is_list.
Subgoal 3.2.2.2.2.1.2:
Variables: P N J JP K L P1 N1 F1 LE LL LL1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos4 : mall LL **
Hpos3 : adj LL1 ($pf P) LL
Hpos5 : merge J LE LL1
============================
is_list K
Subgoal 3.2.2.2.2 is:
exists LL, merge L LE LL /\ mall LL
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_2_is_list.
Subgoal 3.2.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL LL1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos4 : mall LL **
Hpos3 : adj LL1 ($pf P) LL
Hpos5 : merge J LE LL1
Hn : exists U, merge LL1 K U
============================
exists LL, merge L LE LL /\ mall LL
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hmr1 : case Hn.
Subgoal 3.2.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL LL1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos4 : mall LL **
Hpos3 : adj LL1 ($pf P) LL
Hpos5 : merge J LE LL1
Hmr1 : merge LL1 K U
============================
exists LL, merge L LE LL /\ mall LL
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < apply IHht1 to *Hdual *Hpos3 *Hpos4 *Hneg Hmr1.
Subgoal 3.2.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL LL1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos5 : merge J LE LL1
Hmr1 : merge LL1 K U
H1 : mall U
============================
exists LL, merge L LE LL /\ mall LL
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < witness U.
Subgoal 3.2.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL LL1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos5 : merge J LE LL1
Hmr1 : merge LL1 K U
H1 : mall U
============================
merge L LE U /\ mall U
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < split.
Subgoal 3.2.2.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL LL1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos5 : merge J LE LL1
Hmr1 : merge LL1 K U
H1 : mall U
============================
merge L LE U
Subgoal 3.2.2.2.2.3 is:
mall U
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hmr : apply merge_sym to *Hmr.
Subgoal 3.2.2.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL LL1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos5 : merge J LE LL1
Hmr1 : merge LL1 K U
H1 : mall U
Hmr : merge K J L
============================
merge L LE U
Subgoal 3.2.2.2.2.3 is:
mall U
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hmr1 : apply merge_sym to *Hmr1.
Subgoal 3.2.2.2.2.2:
Variables: P N J JP K L P1 N1 F1 LE LL LL1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos5 : merge J LE LL1
H1 : mall U
Hmr : merge K J L
Hmr1 : merge K LL1 U
============================
merge L LE U
Subgoal 3.2.2.2.2.3 is:
mall U
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain change_merge_order2.
Subgoal 3.2.2.2.2.3:
Variables: P N J JP K L P1 N1 F1 LE LL LL1 U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos : is_list JP
Hpos1 : {dual P1 N1}
Hpos2 : extension F1 LE
Hpos5 : merge J LE LL1
Hmr1 : merge LL1 K U
H1 : mall U
============================
mall U
Subgoal 3.3 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < search.
Subgoal 3.3:
Variables: P N J JP K L J1 K1 F2 F1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) JP
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos : merge J1 K1 JP
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hadj1 : apply merge_unadj_3 to *Hpos *Hadj.
Subgoal 3.3:
Variables: P N J JP K L J1 K1 F2 F1
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : (exists JJ, adj JJ ($pf P) J1 /\ merge JJ K1 J) \/
(exists KK, adj KK ($pf P) K1 /\ merge J1 KK J)
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hadj1 : case Hadj1.
Subgoal 3.3.1:
Variables: P N J JP K L J1 K1 F2 F1 JJ
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj JJ ($pf P) J1
Hadj2 : merge JJ K1 J
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hn : assert 0 exists U, merge JJ K U.
Subgoal 3.3.1.1:
Variables: P N J JP K L J1 K1 F2 F1 JJ
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj JJ ($pf P) J1
Hadj2 : merge JJ K1 J
============================
exists U, merge JJ K U
Subgoal 3.3.1 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_exists.
Subgoal 3.3.1.1.1:
Variables: P N J JP K L J1 K1 F2 F1 JJ
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj JJ ($pf P) J1
Hadj2 : merge JJ K1 J
============================
is_list JJ
Subgoal 3.3.1.1.2 is:
is_list K
Subgoal 3.3.1 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_1_is_list.
Subgoal 3.3.1.1.2:
Variables: P N J JP K L J1 K1 F2 F1 JJ
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj JJ ($pf P) J1
Hadj2 : merge JJ K1 J
============================
is_list K
Subgoal 3.3.1 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_2_is_list.
Subgoal 3.3.1:
Variables: P N J JP K L J1 K1 F2 F1 JJ
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj JJ ($pf P) J1
Hadj2 : merge JJ K1 J
Hn : exists U, merge JJ K U
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hmr1 : case Hn.
Subgoal 3.3.1:
Variables: P N J JP K L J1 K1 F2 F1 JJ U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj JJ ($pf P) J1
Hadj2 : merge JJ K1 J
Hmr1 : merge JJ K U
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < apply IHht3 to *Hdual *Hadj1 *Hpos1 *Hneg Hmr1.
Subgoal 3.3.1:
Variables: P N J JP K L J1 K1 F2 F1 JJ U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos2 : mallfoc K1 F2 **
Hadj2 : merge JJ K1 J
Hmr1 : merge JJ K U
H1 : mallfoc U F1
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < assert merge U K1 L.
Subgoal 3.3.1.2:
Variables: P N J JP K L J1 K1 F2 F1 JJ U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos2 : mallfoc K1 F2 **
Hadj2 : merge JJ K1 J
Hmr1 : merge JJ K U
H1 : mallfoc U F1
============================
merge U K1 L
Subgoal 3.3.1 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hmr1 : apply merge_sym to *Hmr1.
Subgoal 3.3.1.2:
Variables: P N J JP K L J1 K1 F2 F1 JJ U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos2 : mallfoc K1 F2 **
Hadj2 : merge JJ K1 J
H1 : mallfoc U F1
Hmr1 : merge K JJ U
============================
merge U K1 L
Subgoal 3.3.1 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < apply merge_sym to *Hmr.
Subgoal 3.3.1.2:
Variables: P N J JP K L J1 K1 F2 F1 JJ U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hpos2 : mallfoc K1 F2 **
Hadj2 : merge JJ K1 J
H1 : mallfoc U F1
Hmr1 : merge K JJ U
H2 : merge K J L
============================
merge U K1 L
Subgoal 3.3.1 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain change_merge_order2.
Subgoal 3.3.1:
Variables: P N J JP K L J1 K1 F2 F1 JJ U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos2 : mallfoc K1 F2 **
Hadj2 : merge JJ K1 J
Hmr1 : merge JJ K U
H1 : mallfoc U F1
H2 : merge U K1 L
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < search.
Subgoal 3.3.2:
Variables: P N J JP K L J1 K1 F2 F1 KK
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj KK ($pf P) K1
Hadj2 : merge J1 KK J
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hn : assert exists U, merge KK K U.
Subgoal 3.3.2.1:
Variables: P N J JP K L J1 K1 F2 F1 KK
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj KK ($pf P) K1
Hadj2 : merge J1 KK J
============================
exists U, merge KK K U
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_exists.
Subgoal 3.3.2.1.1:
Variables: P N J JP K L J1 K1 F2 F1 KK
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj KK ($pf P) K1
Hadj2 : merge J1 KK J
============================
is_list KK
Subgoal 3.3.2.1.2 is:
is_list K
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_2_is_list.
Subgoal 3.3.2.1.2:
Variables: P N J JP K L J1 K1 F2 F1 KK
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj KK ($pf P) K1
Hadj2 : merge J1 KK J
============================
is_list K
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain merge_2_is_list.
Subgoal 3.3.2:
Variables: P N J JP K L J1 K1 F2 F1 KK
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj KK ($pf P) K1
Hadj2 : merge J1 KK J
Hn : exists U, merge KK K U
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < Hmr1 : case Hn.
Subgoal 3.3.2:
Variables: P N J JP K L J1 K1 F2 F1 KK U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hpos2 : mallfoc K1 F2 **
Hadj1 : adj KK ($pf P) K1
Hadj2 : merge J1 KK J
Hmr1 : merge KK K U
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < apply IHht3 to *Hdual *Hadj1 *Hpos2 *Hneg Hmr1.
Subgoal 3.3.2:
Variables: P N J JP K L J1 K1 F2 F1 KK U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hadj2 : merge J1 KK J
Hmr1 : merge KK K U
H1 : mallfoc U F2
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < assert merge J1 U L.
Subgoal 3.3.2.2:
Variables: P N J JP K L J1 K1 F2 F1 KK U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hadj2 : merge J1 KK J
Hmr1 : merge KK K U
H1 : mallfoc U F2
============================
merge J1 U L
Subgoal 3.3.2 is:
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < backchain change_merge_order.
Subgoal 3.3.2:
Variables: P N J JP K L J1 K1 F2 F1 KK U
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hmr : merge J K L
Hpos1 : mallfoc J1 F1 **
Hadj2 : merge J1 KK J
Hmr1 : merge KK K U
H1 : mallfoc U F2
H2 : merge J1 U L
============================
mallfoc L (fjoin F1 F2)
Subgoal 3.4 is:
mallfoc L femp
$cut < search.
Subgoal 3.4:
Variables: P N J K L
IHrank1 : forall P N J JP K L, {dual P N}* -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHrank2 : forall P N F J K KE KN L, {dual P N}* -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L ->
mall L
IHrank3 : forall P N F J JP K L, {dual P N}* -> adj J ($pf P) JP ->
mallfoc JP F ->
(forall F1 KE KN, subf F1 P -> extension F1 KE ->
merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F
IHht1 : forall P N J JP K L, {dual P N}@ -> adj J ($pf P) JP -> mall JP ** ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mall L
IHht2 : forall P N F J K KE KN L, {dual P N}@ -> subf F P ->
mallfoc J F ** -> extension F KE -> merge K KE KN -> mall KN ->
merge J K L -> mall L
IHht3 : forall P N F J JP K L, {dual P N}@ -> adj J ($pf P) JP ->
mallfoc JP F ** ->
(forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN) ->
merge J K L -> mallfoc L F
Hdual : {dual P N}@
Hadj : adj J ($pf P) nil
Hneg : forall F1 KE KN, subf F1 P -> extension F1 KE -> merge K KE KN ->
mall KN
Hmr : merge J K L
============================
mallfoc L femp
$cut < case Hadj.
Proof completed.
Abella < Split $cut as cut_main, cut_principal, cut_commutative.
Theorem cut_main :
forall P N J JP K L, {dual P N} -> adj J ($pf P) JP -> mall JP ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN) ->
merge J K L -> mall L.
Theorem cut_principal :
forall P N F J K KE KN L, {dual P N} -> subf F P -> mallfoc J F ->
extension F KE -> merge K KE KN -> mall KN -> merge J K L -> mall L.
Theorem cut_commutative :
forall P N F J JP K L, {dual P N} -> adj J ($pf P) JP -> mallfoc JP F ->
(forall F KE KN, subf F P -> extension F KE -> merge K KE KN -> mall KN) ->
merge J K L -> mallfoc L F.
Abella <