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 <