Welcome to Abella 2.0.7-dev.
Abella < Kind atm Type.

Abella < Type a, b, c, d, e, f atm.

Abella < Type atom, natom atm -> o.

Abella < Type tens, par o -> o -> o.

Abella < Type one, bot o.

Abella < Type wth, plus o -> o -> o.

Abella < Type top, zero o.

Abella < Define is_fm : o -> prop by 
is_fm (atom A);
is_fm (natom A);
is_fm (tens A B) := is_fm A /\ is_fm B;
is_fm one;
is_fm (par A B) := is_fm A /\ is_fm B;
is_fm bot;
is_fm (wth A B) := is_fm A /\ is_fm B;
is_fm top;
is_fm (plus A B) := is_fm A /\ is_fm B;
is_fm zero.

Abella < Define dual : o -> o -> prop by 
dual (atom A) (natom A);
dual (tens A B) (par AA BB) := dual A AA /\ dual B BB;
dual one bot;
dual (plus A B) (wth AA BB) := dual A AA /\ dual B BB;
dual zero top.

Abella < Theorem dual_is : 
forall A B, dual A B -> is_fm A /\ is_fm B.


============================
 forall A B, dual A B -> is_fm A /\ is_fm B

dual_is < induction on 1.

IH : forall A B, dual A B * -> is_fm A /\ is_fm B
============================
 forall A B, dual A B @ -> is_fm A /\ is_fm B

dual_is < intros.

Variables: A B
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H1 : dual A B @
============================
 is_fm A /\ is_fm B

dual_is < case H1.
Subgoal 1:

Variables: A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
============================
 is_fm (atom A1) /\ is_fm (natom A1)

Subgoal 2 is:
 is_fm (tens A1 B1) /\ is_fm (par AA BB)

Subgoal 3 is:
 is_fm one /\ is_fm bot

Subgoal 4 is:
 is_fm (plus A1 B1) /\ is_fm (wth AA BB)

Subgoal 5 is:
 is_fm zero /\ is_fm top

dual_is < search.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H2 : dual A1 AA *
H3 : dual B1 BB *
============================
 is_fm (tens A1 B1) /\ is_fm (par AA BB)

Subgoal 3 is:
 is_fm one /\ is_fm bot

Subgoal 4 is:
 is_fm (plus A1 B1) /\ is_fm (wth AA BB)

Subgoal 5 is:
 is_fm zero /\ is_fm top

dual_is < apply IH to *H2.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H3 : dual B1 BB *
H4 : is_fm A1
H5 : is_fm AA
============================
 is_fm (tens A1 B1) /\ is_fm (par AA BB)

Subgoal 3 is:
 is_fm one /\ is_fm bot

Subgoal 4 is:
 is_fm (plus A1 B1) /\ is_fm (wth AA BB)

Subgoal 5 is:
 is_fm zero /\ is_fm top

dual_is < apply IH to *H3.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H4 : is_fm A1
H5 : is_fm AA
H6 : is_fm B1
H7 : is_fm BB
============================
 is_fm (tens A1 B1) /\ is_fm (par AA BB)

Subgoal 3 is:
 is_fm one /\ is_fm bot

Subgoal 4 is:
 is_fm (plus A1 B1) /\ is_fm (wth AA BB)

Subgoal 5 is:
 is_fm zero /\ is_fm top

dual_is < search.
Subgoal 3:

IH : forall A B, dual A B * -> is_fm A /\ is_fm B
============================
 is_fm one /\ is_fm bot

Subgoal 4 is:
 is_fm (plus A1 B1) /\ is_fm (wth AA BB)

Subgoal 5 is:
 is_fm zero /\ is_fm top

dual_is < search.
Subgoal 4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H2 : dual A1 AA *
H3 : dual B1 BB *
============================
 is_fm (plus A1 B1) /\ is_fm (wth AA BB)

Subgoal 5 is:
 is_fm zero /\ is_fm top

dual_is < apply IH to *H2.
Subgoal 4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H3 : dual B1 BB *
H4 : is_fm A1
H5 : is_fm AA
============================
 is_fm (plus A1 B1) /\ is_fm (wth AA BB)

Subgoal 5 is:
 is_fm zero /\ is_fm top

dual_is < apply IH to *H3.
Subgoal 4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H4 : is_fm A1
H5 : is_fm AA
H6 : is_fm B1
H7 : is_fm BB
============================
 is_fm (plus A1 B1) /\ is_fm (wth AA BB)

Subgoal 5 is:
 is_fm zero /\ is_fm top

dual_is < search.
Subgoal 5:

IH : forall A B, dual A B * -> is_fm A /\ is_fm B
============================
 is_fm zero /\ is_fm top

dual_is < search.
Proof completed.
Abella < Import "../../lib/merge" with is_o := is_fm.
Importing from "../../lib/merge".

Abella < Define mall : (list o) -> prop by 
mall L := exists A, adj (natom A :: nil) (atom A) L;
mall L := exists A B LL JJ KK J K, adj LL (tens A B) L /\ merge JJ KK LL /\
  adj JJ A J /\ mall J /\ adj KK B K /\ mall K;
mall (one :: nil);
mall L := exists A B LL J K, adj LL (par A B) L /\ adj LL A J /\ adj J B K /\ mall K;
mall L := exists LL, adj LL bot L /\ mall LL;
mall L := exists A B LL J K, adj LL (wth A B) L /\ adj LL A J /\ mall J /\
  adj LL B K /\ mall K;
mall L := exists LL, adj LL top L;
mall L := exists A B LL J, adj LL (plus A B) L /\ adj LL A J /\ mall J;
mall L := exists A B LL J, adj LL (plus A B) L /\ adj LL B J /\ mall J.

Abella < Theorem generalized_id : 
forall A B, dual A B -> mall (A :: B :: nil).


============================
 forall A B, dual A B -> mall (A :: B :: nil)

generalized_id < induction on 1.

IH : forall A B, dual A B * -> mall (A :: B :: nil)
============================
 forall A B, dual A B @ -> mall (A :: B :: nil)

generalized_id < intros.

Variables: A B
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H1 : dual A B @
============================
 mall (A :: B :: nil)

generalized_id < case H1.
Subgoal 1:

Variables: A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
============================
 mall (atom A1 :: natom A1 :: nil)

Subgoal 2 is:
 mall (tens A1 B1 :: par AA BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < search.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
============================
 mall (tens A1 B1 :: par AA BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < apply IH to H2.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
============================
 mall (tens A1 B1 :: par AA BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < apply IH to H3.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
============================
 mall (tens A1 B1 :: par AA BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < apply dual_is to H2.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
============================
 mall (tens A1 B1 :: par AA BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < apply dual_is to H3.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 mall (tens A1 B1 :: par AA BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < unfold 4.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists A B LL J K, adj LL (par A B) (tens A1 B1 :: par AA BB :: nil) /\
   adj LL A J /\ adj J B K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness AA.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists B LL J K, adj LL (par AA B) (tens A1 B1 :: par AA BB :: nil) /\
   adj LL AA J /\ adj J B K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness BB.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists LL J K, adj LL (par AA BB) (tens A1 B1 :: par AA BB :: nil) /\
   adj LL AA J /\ adj J BB K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness tens A1 B1 :: nil.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists J K, adj (tens A1 B1 :: nil) (par AA BB)
               (tens A1 B1 :: par AA BB :: nil) /\
   adj (tens A1 B1 :: nil) AA J /\ adj J BB K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness tens A1 B1 :: AA :: nil.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists K, adj (tens A1 B1 :: nil) (par AA BB)
             (tens A1 B1 :: par AA BB :: nil) /\
   adj (tens A1 B1 :: nil) AA (tens A1 B1 :: AA :: nil) /\
   adj (tens A1 B1 :: AA :: nil) BB K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness tens A1 B1 :: AA :: BB :: nil.
Subgoal 2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 adj (tens A1 B1 :: nil) (par AA BB) (tens A1 B1 :: par AA BB :: nil) /\
   adj (tens A1 B1 :: nil) AA (tens A1 B1 :: AA :: nil) /\
   adj (tens A1 B1 :: AA :: nil) BB (tens A1 B1 :: AA :: BB :: nil) /\
   mall (tens A1 B1 :: AA :: BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < split.
Subgoal 2.1:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 adj (tens A1 B1 :: nil) (par AA BB) (tens A1 B1 :: par AA BB :: nil)

Subgoal 2.2 is:
 adj (tens A1 B1 :: nil) AA (tens A1 B1 :: AA :: nil)

Subgoal 2.3 is:
 adj (tens A1 B1 :: AA :: nil) BB (tens A1 B1 :: AA :: BB :: nil)

Subgoal 2.4 is:
 mall (tens A1 B1 :: AA :: BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < search.
Subgoal 2.2:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 adj (tens A1 B1 :: nil) AA (tens A1 B1 :: AA :: nil)

Subgoal 2.3 is:
 adj (tens A1 B1 :: AA :: nil) BB (tens A1 B1 :: AA :: BB :: nil)

Subgoal 2.4 is:
 mall (tens A1 B1 :: AA :: BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < search.
Subgoal 2.3:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 adj (tens A1 B1 :: AA :: nil) BB (tens A1 B1 :: AA :: BB :: nil)

Subgoal 2.4 is:
 mall (tens A1 B1 :: AA :: BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < search.
Subgoal 2.4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 mall (tens A1 B1 :: AA :: BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < unfold 2.
Subgoal 2.4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists A B LL JJ KK J K, adj LL (tens A B) (tens A1 B1 :: AA :: BB :: nil) /\
   merge JJ KK LL /\ adj JJ A J /\ mall J /\ adj KK B K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness A1.
Subgoal 2.4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists B LL JJ KK J K, adj LL (tens A1 B) (tens A1 B1 :: AA :: BB :: nil) /\
   merge JJ KK LL /\ adj JJ A1 J /\ mall J /\ adj KK B K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness B1.
Subgoal 2.4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists LL JJ KK J K, adj LL (tens A1 B1) (tens A1 B1 :: AA :: BB :: nil) /\
   merge JJ KK LL /\ adj JJ A1 J /\ mall J /\ adj KK B1 K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness AA :: BB :: nil.
Subgoal 2.4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists JJ KK J K, adj (AA :: BB :: nil) (tens A1 B1)
                     (tens A1 B1 :: AA :: BB :: nil) /\
   merge JJ KK (AA :: BB :: nil) /\ adj JJ A1 J /\ mall J /\ adj KK B1 K /\
   mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness AA :: nil.
Subgoal 2.4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists KK J K, adj (AA :: BB :: nil) (tens A1 B1)
                  (tens A1 B1 :: AA :: BB :: nil) /\
   merge (AA :: nil) KK (AA :: BB :: nil) /\ adj (AA :: nil) A1 J /\
   mall J /\ adj KK B1 K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness BB :: nil.
Subgoal 2.4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists J K, adj (AA :: BB :: nil) (tens A1 B1)
               (tens A1 B1 :: AA :: BB :: nil) /\
   merge (AA :: nil) (BB :: nil) (AA :: BB :: nil) /\ adj (AA :: nil) A1 J /\
   mall J /\ adj (BB :: nil) B1 K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness A1 :: AA :: nil.
Subgoal 2.4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 exists K, adj (AA :: BB :: nil) (tens A1 B1) (tens A1 B1 :: AA :: BB :: nil) /\
   merge (AA :: nil) (BB :: nil) (AA :: BB :: nil) /\
   adj (AA :: nil) A1 (A1 :: AA :: nil) /\ mall (A1 :: AA :: nil) /\
   adj (BB :: nil) B1 K /\ mall K

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < witness B1 :: BB :: nil.
Subgoal 2.4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 adj (AA :: BB :: nil) (tens A1 B1) (tens A1 B1 :: AA :: BB :: nil) /\
   merge (AA :: nil) (BB :: nil) (AA :: BB :: nil) /\
   adj (AA :: nil) A1 (A1 :: AA :: nil) /\ mall (A1 :: AA :: nil) /\
   adj (BB :: nil) B1 (B1 :: BB :: nil) /\ mall (B1 :: BB :: nil)

Subgoal 3 is:
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < search.
Subgoal 3:

IH : forall A B, dual A B * -> mall (A :: B :: nil)
============================
 mall (one :: bot :: nil)

Subgoal 4 is:
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < search.
Subgoal 4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
============================
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < apply IH to H2.
Subgoal 4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
============================
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < apply IH to H3.
Subgoal 4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
============================
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < apply dual_is to H2.
Subgoal 4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
============================
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < apply dual_is to H3.
Subgoal 4:

Variables: BB AA B1 A1
IH : forall A B, dual A B * -> mall (A :: B :: nil)
H2 : dual A1 AA *
H3 : dual B1 BB *
H4 : mall (A1 :: AA :: nil)
H5 : mall (B1 :: BB :: nil)
H6 : is_fm A1
H7 : is_fm AA
H8 : is_fm B1
H9 : is_fm BB
============================
 mall (plus A1 B1 :: wth AA BB :: nil)

Subgoal 5 is:
 mall (zero :: top :: nil)

generalized_id < search.
Subgoal 5:

IH : forall A B, dual A B * -> mall (A :: B :: nil)
============================
 mall (zero :: top :: nil)

generalized_id < search.
Proof completed.
Abella < Theorem mall_perm : 
forall K L, mall K -> perm K L -> mall L.


============================
 forall K L, mall K -> perm K L -> mall L

mall_perm < induction on 1.

IH : forall K L, mall K * -> perm K L -> mall L
============================
 forall K L, mall K @ -> perm K L -> mall L

mall_perm < intros.

Variables: K L
IH : forall K L, mall K * -> perm K L -> mall L
H1 : mall K @
H2 : perm K L
============================
 mall L

mall_perm < case H1.
Subgoal 1:

Variables: K L A
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj (natom A :: nil) (atom A) K
============================
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < case H3.
Subgoal 1.1:

Variables: L A
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm (atom A :: natom A :: nil) L
H4 : is_fm (atom A)
H5 : is_list (natom A :: nil)
============================
 mall L

Subgoal 1.2 is:
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_cons_1 to *H2.
Subgoal 1.1:

Variables: L A J
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (atom A)
H5 : is_list (natom A :: nil)
H6 : adj J (atom A) L
H7 : perm (natom A :: nil) J
============================
 mall L

Subgoal 1.2 is:
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_cons_1 to *H7.
Subgoal 1.1:

Variables: L A J J1
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (atom A)
H5 : is_list (natom A :: nil)
H6 : adj J (atom A) L
H8 : adj J1 (natom A) J
H9 : perm nil J1
============================
 mall L

Subgoal 1.2 is:
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < case H9.
Subgoal 1.1.1:

Variables: L A J
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (atom A)
H5 : is_list (natom A :: nil)
H6 : adj J (atom A) L
H8 : adj nil (natom A) J
============================
 mall L

Subgoal 1.1.2 is:
 mall L

Subgoal 1.2 is:
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < case H8.
Subgoal 1.1.1:

Variables: L A
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (atom A)
H5 : is_list (natom A :: nil)
H6 : adj (natom A :: nil) (atom A) L
H10 : is_fm (natom A)
H11 : is_list nil
============================
 mall L

Subgoal 1.1.2 is:
 mall L

Subgoal 1.2 is:
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 1.1.2:

Variables: L A J J1 A1 KK LL
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (atom A)
H5 : is_list (natom A :: nil)
H6 : adj J (atom A) L
H8 : adj J1 (natom A) J
H10 : adj KK A1 nil
H11 : adj LL A1 J1
H12 : perm KK LL
============================
 mall L

Subgoal 1.2 is:
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < case H10.
Subgoal 1.2:

Variables: L A L1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm (natom A :: L1) L
H4 : is_fm (natom A)
H5 : adj nil (atom A) L1
============================
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_cons_1 to *H2.
Subgoal 1.2:

Variables: L A L1 J
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (natom A)
H5 : adj nil (atom A) L1
H6 : adj J (natom A) L
H7 : perm L1 J
============================
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_nil_1 to *H5.
Subgoal 1.2:

Variables: L A J
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (natom A)
H6 : adj J (natom A) L
H7 : perm (atom A :: nil) J
============================
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_cons_1 to *H7.
Subgoal 1.2:

Variables: L A J J1
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (natom A)
H6 : adj J (natom A) L
H8 : adj J1 (atom A) J
H9 : perm nil J1
============================
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_swap to *H8 *H6.
Subgoal 1.2:

Variables: L A J J1 U
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (natom A)
H9 : perm nil J1
H10 : adj J1 (natom A) U
H11 : adj U (atom A) L
============================
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_nil_1 to *H9.
Subgoal 1.2:

Variables: L A J U
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (natom A)
H10 : adj nil (natom A) U
H11 : adj U (atom A) L
============================
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_nil_1 to *H10.
Subgoal 1.2:

Variables: L A J
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (natom A)
H11 : adj (natom A :: nil) (atom A) L
============================
 mall L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < unfold 1.
Subgoal 1.2:

Variables: L A J
IH : forall K L, mall K * -> perm K L -> mall L
H4 : is_fm (natom A)
H11 : adj (natom A :: nil) (atom A) L
============================
 exists A, adj (natom A :: nil) (atom A) L

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H5.
Subgoal 2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H5.
Subgoal 2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H7.
Subgoal 2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H7.
Subgoal 2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < assert perm J (A :: JJ).
Subgoal 2.1:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
============================
 perm J (A :: JJ)

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_refl to H10.
Subgoal 2.1:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H13 : perm JJ JJ
============================
 perm J (A :: JJ)

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H13 : perm J (A :: JJ)
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < assert perm K1 (B :: KK).
Subgoal 2.2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H13 : perm J (A :: JJ)
============================
 perm K1 (B :: KK)

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_refl to H12.
Subgoal 2.2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H13 : perm J (A :: JJ)
H14 : perm KK KK
============================
 perm K1 (B :: KK)

Subgoal 2 is:
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mall J *
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H13 : perm J (A :: JJ)
H14 : perm K1 (B :: KK)
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply IH to *H6 *H13.
Subgoal 2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H7 : adj KK B K1
H8 : mall K1 *
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H14 : perm K1 (B :: KK)
H15 : mall (A :: JJ)
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply IH to *H8 *H14.
Subgoal 2:

Variables: K L A B LL JJ KK J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H7 : adj KK B K1
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H15 : mall (A :: JJ)
H16 : mall (B :: KK)
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_perm_full to H2 H3.
Subgoal 2:

Variables: K L A B LL JJ KK J K1 KK1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H7 : adj KK B K1
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H15 : mall (A :: JJ)
H16 : mall (B :: KK)
H17 : adj KK1 (tens A B) L
H18 : perm LL KK1
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_merge_3 to *H4 *H18.
Subgoal 2:

Variables: K L A B LL JJ KK J K1 KK1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H5 : adj JJ A J
H7 : adj KK B K1
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H15 : mall (A :: JJ)
H16 : mall (B :: KK)
H17 : adj KK1 (tens A B) L
H19 : merge JJ KK KK1
============================
 mall L

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < unfold 2.
Subgoal 2:

Variables: K L A B LL JJ KK J K1 KK1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (tens A B) K
H5 : adj JJ A J
H7 : adj KK B K1
H9 : is_fm A
H10 : is_list JJ
H11 : is_fm B
H12 : is_list KK
H15 : mall (A :: JJ)
H16 : mall (B :: KK)
H17 : adj KK1 (tens A B) L
H19 : merge JJ KK KK1
============================
 exists A B LL JJ KK J K, adj LL (tens A B) L /\ merge JJ KK LL /\
   adj JJ A J /\ mall J /\ adj KK B K /\ mall K

Subgoal 3 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 3:

Variables: L
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm (one :: nil) L
============================
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < case H2.
Subgoal 3:

Variables: L A KK LL
IH : forall K L, mall K * -> perm K L -> mall L
H3 : adj KK A (one :: nil)
H4 : adj LL A L
H5 : perm KK LL
============================
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < case H3.
Subgoal 3.1:

Variables: L LL
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL one L
H5 : perm nil LL
H6 : is_fm one
H7 : is_list nil
============================
 mall L

Subgoal 3.2 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_nil_1 to *H5.
Subgoal 3.1:

Variables: L
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj nil one L
H6 : is_fm one
H7 : is_list nil
============================
 mall L

Subgoal 3.2 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_nil_1 to *H4.
Subgoal 3.1:

IH : forall K L, mall K * -> perm K L -> mall L
H6 : is_fm one
H7 : is_list nil
============================
 mall (one :: nil)

Subgoal 3.2 is:
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 3.2:

Variables: L A LL K1
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A L
H5 : perm (one :: K1) LL
H6 : is_fm one
H7 : adj K1 A nil
============================
 mall L

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < case H7.
Subgoal 4:

Variables: K L A B LL J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (par A B) K
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
============================
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_perm_full to *H2 *H3.
Subgoal 4:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
============================
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < assert perm J (A :: KK).
Subgoal 4.1:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
============================
 perm J (A :: KK)

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H7.
Subgoal 4.1:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : is_list KK
============================
 perm J (A :: KK)

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 4.1:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : is_list KK
H10 : is_fm A
============================
 perm J (A :: KK)

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 4:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
============================
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < assert perm K1 (B :: A :: KK).
Subgoal 4.2:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
============================
 perm K1 (B :: A :: KK)

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H7.
Subgoal 4.2:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
H10 : is_list KK
============================
 perm K1 (B :: A :: KK)

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 4.2:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
H10 : is_list KK
H11 : is_fm A
============================
 perm K1 (B :: A :: KK)

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H5.
Subgoal 4.2:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
H10 : is_list KK
H11 : is_fm A
H12 : is_fm B
============================
 perm K1 (B :: A :: KK)

Subgoal 4 is:
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 4:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H6 : mall K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
H10 : perm K1 (B :: A :: KK)
============================
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply IH to *H6 *H10.
Subgoal 4:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
H11 : mall (B :: A :: KK)
============================
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H7.
Subgoal 4:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
H11 : mall (B :: A :: KK)
H12 : is_list KK
============================
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 4:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
H11 : mall (B :: A :: KK)
H12 : is_list KK
H13 : is_fm A
============================
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H5.
Subgoal 4:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
H11 : mall (B :: A :: KK)
H12 : is_list KK
H13 : is_fm A
H14 : is_fm B
============================
 mall L

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < unfold 4.
Subgoal 4:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : adj J B K1
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : perm J (A :: KK)
H11 : mall (B :: A :: KK)
H12 : is_list KK
H13 : is_fm A
H14 : is_fm B
============================
 exists A B LL J K, adj LL (par A B) L /\ adj LL A J /\ adj J B K /\ mall K

Subgoal 5 is:
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 5:

Variables: K L LL
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL bot K
H4 : mall LL *
============================
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_perm_full to *H2 *H3.
Subgoal 5:

Variables: K L LL KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : mall LL *
H5 : adj KK bot L
H6 : perm LL KK
============================
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply IH to *H4 *H6.
Subgoal 5:

Variables: K L LL KK
IH : forall K L, mall K * -> perm K L -> mall L
H5 : adj KK bot L
H7 : mall KK
============================
 mall L

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < unfold 5.
Subgoal 5:

Variables: K L LL KK
IH : forall K L, mall K * -> perm K L -> mall L
H5 : adj KK bot L
H7 : mall KK
============================
 exists LL, adj LL bot L /\ mall LL

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 6:

Variables: K L A B LL J K1
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (wth A B) K
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_perm_full to *H2 *H3.
Subgoal 6:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < assert perm J (A :: KK).
Subgoal 6.1:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
============================
 perm J (A :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H8.
Subgoal 6.1:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H10 : is_list KK
============================
 perm J (A :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 6.1:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H10 : is_list KK
H11 : is_fm A
============================
 perm J (A :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_refl to H10.
Subgoal 6.1:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H10 : is_list KK
H11 : is_fm A
H12 : perm KK KK
============================
 perm J (A :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 6:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H10 : perm J (A :: KK)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < assert perm K1 (B :: KK).
Subgoal 6.2:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H10 : perm J (A :: KK)
============================
 perm K1 (B :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H8.
Subgoal 6.2:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H10 : perm J (A :: KK)
H11 : is_list KK
============================
 perm K1 (B :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H6.
Subgoal 6.2:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H10 : perm J (A :: KK)
H11 : is_list KK
H12 : is_fm B
============================
 perm K1 (B :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_refl to H11.
Subgoal 6.2:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H10 : perm J (A :: KK)
H11 : is_list KK
H12 : is_fm B
H13 : perm KK KK
============================
 perm K1 (B :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 6:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H10 : perm J (A :: KK)
H11 : perm K1 (B :: KK)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply IH to *H5 *H10.
Subgoal 6:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj LL B K1
H7 : mall K1 *
H8 : adj KK (wth A B) L
H9 : perm LL KK
H11 : perm K1 (B :: KK)
H12 : mall (A :: KK)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply IH to *H7 *H11.
Subgoal 6:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj LL B K1
H8 : adj KK (wth A B) L
H9 : perm LL KK
H12 : mall (A :: KK)
H13 : mall (B :: KK)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H8.
Subgoal 6:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj LL B K1
H8 : adj KK (wth A B) L
H9 : perm LL KK
H12 : mall (A :: KK)
H13 : mall (B :: KK)
H14 : is_list KK
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H8.
Subgoal 6:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj LL B K1
H8 : adj KK (wth A B) L
H9 : perm LL KK
H12 : mall (A :: KK)
H13 : mall (B :: KK)
H14 : is_list KK
H15 : is_fm (wth A B)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < case H15.
Subgoal 6:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj LL B K1
H8 : adj KK (wth A B) L
H9 : perm LL KK
H12 : mall (A :: KK)
H13 : mall (B :: KK)
H14 : is_list KK
H16 : is_fm A
H17 : is_fm B
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < unfold 6.
Subgoal 6:

Variables: K L A B LL J K1 KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj LL B K1
H8 : adj KK (wth A B) L
H9 : perm LL KK
H12 : mall (A :: KK)
H13 : mall (B :: KK)
H14 : is_list KK
H16 : is_fm A
H17 : is_fm B
============================
 exists A B LL J K, adj LL (wth A B) L /\ adj LL A J /\ mall J /\
   adj LL B K /\ mall K

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 7:

Variables: K L LL
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL top K
============================
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_perm_full to *H2 *H3.
Subgoal 7:

Variables: K L LL KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj KK top L
H5 : perm LL KK
============================
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < unfold 7.
Subgoal 7:

Variables: K L LL KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj KK top L
H5 : perm LL KK
============================
 exists LL, adj LL top L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 8:

Variables: K L A B LL J
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (plus A B) K
H4 : adj LL A J
H5 : mall J *
============================
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_perm_full to *H2 *H3.
Subgoal 8:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
============================
 mall L

Subgoal 9 is:
 mall L

mall_perm < assert perm J (A :: KK).
Subgoal 8.1:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
============================
 perm J (A :: KK)

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H6.
Subgoal 8.1:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
H8 : is_list KK
============================
 perm J (A :: KK)

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 8.1:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
H8 : is_list KK
H9 : is_fm A
============================
 perm J (A :: KK)

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply perm_refl to H8.
Subgoal 8.1:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
H8 : is_list KK
H9 : is_fm A
H10 : perm KK KK
============================
 perm J (A :: KK)

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 8:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
H8 : perm J (A :: KK)
============================
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply IH to *H5 *H8.
Subgoal 8:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj KK (plus A B) L
H7 : perm LL KK
H9 : mall (A :: KK)
============================
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H6.
Subgoal 8:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj KK (plus A B) L
H7 : perm LL KK
H9 : mall (A :: KK)
H10 : is_list KK
============================
 mall L

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 8:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj KK (plus A B) L
H7 : perm LL KK
H9 : mall (A :: KK)
H10 : is_list KK
H11 : is_fm A
============================
 mall L

Subgoal 9 is:
 mall L

mall_perm < unfold 8.
Subgoal 8:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL A J
H6 : adj KK (plus A B) L
H7 : perm LL KK
H9 : mall (A :: KK)
H10 : is_list KK
H11 : is_fm A
============================
 exists A B LL J, adj LL (plus A B) L /\ adj LL A J /\ mall J

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 9:

Variables: K L A B LL J
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (plus A B) K
H4 : adj LL B J
H5 : mall J *
============================
 mall L

mall_perm < apply adj_perm_full to *H2 *H3.
Subgoal 9:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
============================
 mall L

mall_perm < assert perm J (B :: KK).
Subgoal 9.1:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
============================
 perm J (B :: KK)

Subgoal 9 is:
 mall L

mall_perm < apply adj_1_is_list to H6.
Subgoal 9.1:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
H8 : is_list KK
============================
 perm J (B :: KK)

Subgoal 9 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 9.1:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
H8 : is_list KK
H9 : is_fm B
============================
 perm J (B :: KK)

Subgoal 9 is:
 mall L

mall_perm < apply perm_refl to H8.
Subgoal 9.1:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
H8 : is_list KK
H9 : is_fm B
H10 : perm KK KK
============================
 perm J (B :: KK)

Subgoal 9 is:
 mall L

mall_perm < search.
Subgoal 9:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H5 : mall J *
H6 : adj KK (plus A B) L
H7 : perm LL KK
H8 : perm J (B :: KK)
============================
 mall L

mall_perm < apply IH to *H5 *H8.
Subgoal 9:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H6 : adj KK (plus A B) L
H7 : perm LL KK
H9 : mall (B :: KK)
============================
 mall L

mall_perm < apply adj_1_is_list to H6.
Subgoal 9:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H6 : adj KK (plus A B) L
H7 : perm LL KK
H9 : mall (B :: KK)
H10 : is_list KK
============================
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 9:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H6 : adj KK (plus A B) L
H7 : perm LL KK
H9 : mall (B :: KK)
H10 : is_list KK
H11 : is_fm B
============================
 mall L

mall_perm < unfold 9.
Subgoal 9:

Variables: K L A B LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H4 : adj LL B J
H6 : adj KK (plus A B) L
H7 : perm LL KK
H9 : mall (B :: KK)
H10 : is_list KK
H11 : is_fm B
============================
 exists A B LL J, adj LL (plus A B) L /\ adj LL B J /\ mall J

mall_perm < search.
Proof completed.
Abella < Theorem bot_inv : 
forall J L, mall L -> adj J bot L -> mall J.


============================
 forall J L, mall L -> adj J bot L -> mall J

bot_inv < induction on 1.

IH : forall J L, mall L * -> adj J bot L -> mall J
============================
 forall J L, mall L @ -> adj J bot L -> mall J

bot_inv < intros.

Variables: J L
IH : forall J L, mall L * -> adj J bot L -> mall J
H1 : mall L @
H2 : adj J bot L
============================
 mall J

bot_inv < case H1.
Subgoal 1:

Variables: J L A
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj (natom A :: nil) (atom A) L
============================
 mall J

Subgoal 2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 1:

Variables: J L A
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj (natom A :: nil) (atom A) L
H4 : bot = atom A /\ perm J (natom A :: nil) \/
       (exists KK, adj KK bot (natom A :: nil))
============================
 mall J

Subgoal 2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H4.
Subgoal 1:

Variables: J L A KK
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj (natom A :: nil) (atom A) L
H5 : adj KK bot (natom A :: nil)
============================
 mall J

Subgoal 2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H5.
Subgoal 1:

Variables: J L A K
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj (natom A :: nil) (atom A) L
H6 : is_fm (natom A)
H7 : adj K bot nil
============================
 mall J

Subgoal 2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H7.
Subgoal 2:

Variables: J L A B LL JJ KK J1 K
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 2:

Variables: J L A B LL JJ KK J1 K
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H9 : bot = tens A B /\ perm J LL \/ (exists KK, adj KK bot LL)
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H9.
Subgoal 2:

Variables: J L A B LL JJ KK J1 K KK1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply merge_unadj_3 to H4 H10.
Subgoal 2:

Variables: J L A B LL JJ KK J1 K KK1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H11 : (exists JJ1, adj JJ1 bot JJ /\ merge JJ1 KK KK1) \/
        (exists KK2, adj KK2 bot KK /\ merge JJ KK2 KK1)
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H11.
Subgoal 2.1:

Variables: J L A B LL JJ KK J1 K KK1 JJ1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj JJ1 bot JJ
H13 : merge JJ1 KK KK1
============================
 mall J

Subgoal 2.2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H12 H5.
Subgoal 2.1:

Variables: J L A B LL JJ KK J1 K KK1 JJ1 U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj JJ1 bot JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H15 : adj U bot J1
============================
 mall J

Subgoal 2.2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply IH to *H6 H15.
Subgoal 2.1:

Variables: J L A B LL JJ KK J1 K KK1 JJ1 U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj JJ1 bot JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H15 : adj U bot J1
H16 : mall U
============================
 mall J

Subgoal 2.2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply merge_unadj_1 to H4 H12.
Subgoal 2.1:

Variables: J L A B LL JJ KK J1 K KK1 JJ1 U LL1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj JJ1 bot JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H15 : adj U bot J1
H16 : mall U
H17 : adj LL1 bot LL
H18 : merge JJ1 KK LL1
============================
 mall J

Subgoal 2.2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H17 H3.
Subgoal 2.1:

Variables: J L A B LL JJ KK J1 K KK1 JJ1 U LL1 U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj JJ1 bot JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H15 : adj U bot J1
H16 : mall U
H17 : adj LL1 bot LL
H18 : merge JJ1 KK LL1
H19 : adj LL1 (tens A B) U1
H20 : adj U1 bot L
============================
 mall J

Subgoal 2.2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < assert mall U1.
Subgoal 2.1:

Variables: J L A B LL JJ KK J1 K KK1 JJ1 U LL1 U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj JJ1 bot JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H15 : adj U bot J1
H16 : mall U
H17 : adj LL1 bot LL
H18 : merge JJ1 KK LL1
H19 : adj LL1 (tens A B) U1
H20 : adj U1 bot L
H21 : mall U1
============================
 mall J

Subgoal 2.2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result to H20 H2.
Subgoal 2.1:

Variables: J L A B LL JJ KK J1 K KK1 JJ1 U LL1 U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj JJ1 bot JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H15 : adj U bot J1
H16 : mall U
H17 : adj LL1 bot LL
H18 : merge JJ1 KK LL1
H19 : adj LL1 (tens A B) U1
H20 : adj U1 bot L
H21 : mall U1
H22 : perm U1 J
============================
 mall J

Subgoal 2.2 is:
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < backchain mall_perm with K = U1.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply merge_unadj_2 to *H4 H12.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2 LL1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 bot LL
H15 : merge JJ KK2 LL1
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result to H14 H10.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2 LL1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 bot LL
H15 : merge JJ KK2 LL1
H16 : perm LL1 KK1
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply perm_merge_3 to *H15 *H16.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2 LL1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 bot LL
H17 : merge JJ KK2 KK1
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H12 H7.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2 LL1 U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H8 : mall K *
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 bot LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 B U
H19 : adj U bot K
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply IH to *H8 H19.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2 LL1 U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 bot LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 B U
H19 : adj U bot K
H20 : mall U
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H10 H3.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2 LL1 U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 bot LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 B U
H19 : adj U bot K
H20 : mall U
H21 : adj KK1 (tens A B) U1
H22 : adj U1 bot L
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < assert mall U1.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2 LL1 U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 bot LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 B U
H19 : adj U bot K
H20 : mall U
H21 : adj KK1 (tens A B) U1
H22 : adj U1 bot L
H23 : mall U1
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result to H22 H2.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2 LL1 U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mall J1 *
H7 : adj KK B K
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 bot LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 B U
H19 : adj U bot K
H20 : mall U
H21 : adj KK1 (tens A B) U1
H22 : adj U1 bot L
H23 : mall U1
H24 : perm U1 J
============================
 mall J

Subgoal 3 is:
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < backchain mall_perm with K = U1.
Subgoal 3:

Variables: J
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot (one :: nil)
============================
 mall J

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H2.
Subgoal 3:

Variables: K
IH : forall J L, mall L * -> adj J bot L -> mall J
H3 : is_fm one
H4 : adj K bot nil
============================
 mall (one :: K)

Subgoal 4 is:
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H4.
Subgoal 4:

Variables: J L A B LL J1 K
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H6 : mall K *
============================
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 4:

Variables: J L A B LL J1 K
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H6 : mall K *
H7 : bot = par A B /\ perm J LL \/ (exists KK, adj KK bot LL)
============================
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H7.
Subgoal 4:

Variables: J L A B LL J1 K KK
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H6 : mall K *
H8 : adj KK bot LL
============================
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H8 H4.
Subgoal 4:

Variables: J L A B LL J1 K KK U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H6 : mall K *
H8 : adj KK bot LL
H9 : adj KK A U
H10 : adj U bot J1
============================
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H10 H5.
Subgoal 4:

Variables: J L A B LL J1 K KK U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H6 : mall K *
H8 : adj KK bot LL
H9 : adj KK A U
H10 : adj U bot J1
H11 : adj U B U1
H12 : adj U1 bot K
============================
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply IH to *H6 H12.
Subgoal 4:

Variables: J L A B LL J1 K KK U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H8 : adj KK bot LL
H9 : adj KK A U
H10 : adj U bot J1
H11 : adj U B U1
H12 : adj U1 bot K
H13 : mall U1
============================
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H8 H3.
Subgoal 4:

Variables: J L A B LL J1 K KK U U1 U2
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H8 : adj KK bot LL
H9 : adj KK A U
H10 : adj U bot J1
H11 : adj U B U1
H12 : adj U1 bot K
H13 : mall U1
H14 : adj KK (par A B) U2
H15 : adj U2 bot L
============================
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < assert mall U2.
Subgoal 4:

Variables: J L A B LL J1 K KK U U1 U2
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H8 : adj KK bot LL
H9 : adj KK A U
H10 : adj U bot J1
H11 : adj U B U1
H12 : adj U1 bot K
H13 : mall U1
H14 : adj KK (par A B) U2
H15 : adj U2 bot L
H16 : mall U2
============================
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result to H15 H2.
Subgoal 4:

Variables: J L A B LL J1 K KK U U1 U2
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H8 : adj KK bot LL
H9 : adj KK A U
H10 : adj U bot J1
H11 : adj U B U1
H12 : adj U1 bot K
H13 : mall U1
H14 : adj KK (par A B) U2
H15 : adj U2 bot L
H16 : mall U2
H17 : perm U2 J
============================
 mall J

Subgoal 5 is:
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < backchain mall_perm with K = U2.
Subgoal 5:

Variables: J L LL
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL bot L
H4 : mall LL *
============================
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result to H3 H2.
Subgoal 5:

Variables: J L LL
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL bot L
H4 : mall LL *
H5 : perm LL J
============================
 mall J

Subgoal 6 is:
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < backchain mall_perm.
Subgoal 6:

Variables: J L A B LL J1 K
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (wth A B) L
H4 : adj LL A J1
H5 : mall J1 *
H6 : adj LL B K
H7 : mall K *
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 6:

Variables: J L A B LL J1 K
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (wth A B) L
H4 : adj LL A J1
H5 : mall J1 *
H6 : adj LL B K
H7 : mall K *
H8 : bot = wth A B /\ perm J LL \/ (exists KK, adj KK bot LL)
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H8.
Subgoal 6:

Variables: J L A B LL J1 K KK
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (wth A B) L
H4 : adj LL A J1
H5 : mall J1 *
H6 : adj LL B K
H7 : mall K *
H9 : adj KK bot LL
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H9 H4.
Subgoal 6:

Variables: J L A B LL J1 K KK U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (wth A B) L
H4 : adj LL A J1
H5 : mall J1 *
H6 : adj LL B K
H7 : mall K *
H9 : adj KK bot LL
H10 : adj KK A U
H11 : adj U bot J1
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply IH to *H5 H11.
Subgoal 6:

Variables: J L A B LL J1 K KK U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (wth A B) L
H4 : adj LL A J1
H6 : adj LL B K
H7 : mall K *
H9 : adj KK bot LL
H10 : adj KK A U
H11 : adj U bot J1
H12 : mall U
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H9 H6.
Subgoal 6:

Variables: J L A B LL J1 K KK U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (wth A B) L
H4 : adj LL A J1
H6 : adj LL B K
H7 : mall K *
H9 : adj KK bot LL
H10 : adj KK A U
H11 : adj U bot J1
H12 : mall U
H13 : adj KK B U1
H14 : adj U1 bot K
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply IH to *H7 H14.
Subgoal 6:

Variables: J L A B LL J1 K KK U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (wth A B) L
H4 : adj LL A J1
H6 : adj LL B K
H9 : adj KK bot LL
H10 : adj KK A U
H11 : adj U bot J1
H12 : mall U
H13 : adj KK B U1
H14 : adj U1 bot K
H15 : mall U1
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H9 H3.
Subgoal 6:

Variables: J L A B LL J1 K KK U U1 U2
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (wth A B) L
H4 : adj LL A J1
H6 : adj LL B K
H9 : adj KK bot LL
H10 : adj KK A U
H11 : adj U bot J1
H12 : mall U
H13 : adj KK B U1
H14 : adj U1 bot K
H15 : mall U1
H16 : adj KK (wth A B) U2
H17 : adj U2 bot L
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result to H17 H2.
Subgoal 6:

Variables: J L A B LL J1 K KK U U1 U2
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (wth A B) L
H4 : adj LL A J1
H6 : adj LL B K
H9 : adj KK bot LL
H10 : adj KK A U
H11 : adj U bot J1
H12 : mall U
H13 : adj KK B U1
H14 : adj U1 bot K
H15 : mall U1
H16 : adj KK (wth A B) U2
H17 : adj U2 bot L
H18 : perm U2 J
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < backchain mall_perm with K = U2.
Subgoal 7:

Variables: J L LL
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL top L
============================
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 7:

Variables: J L LL
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL top L
H4 : bot = top /\ perm J LL \/ (exists KK, adj KK bot LL)
============================
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H4.
Subgoal 7:

Variables: J L LL KK
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL top L
H5 : adj KK bot LL
============================
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H5 H3.
Subgoal 7:

Variables: J L LL KK U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL top L
H5 : adj KK bot LL
H6 : adj KK top U
H7 : adj U bot L
============================
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result to H7 H2.
Subgoal 7:

Variables: J L LL KK U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL top L
H5 : adj KK bot LL
H6 : adj KK top U
H7 : adj U bot L
H8 : perm U J
============================
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

bot_inv < backchain mall_perm with K = U.
Subgoal 8:

Variables: J L A B LL J1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL A J1
H5 : mall J1 *
============================
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 8:

Variables: J L A B LL J1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL A J1
H5 : mall J1 *
H6 : bot = plus A B /\ perm J LL \/ (exists KK, adj KK bot LL)
============================
 mall J

Subgoal 9 is:
 mall J

bot_inv < case H6.
Subgoal 8:

Variables: J L A B LL J1 KK
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL A J1
H5 : mall J1 *
H7 : adj KK bot LL
============================
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to H7 H4.
Subgoal 8:

Variables: J L A B LL J1 KK U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL A J1
H5 : mall J1 *
H7 : adj KK bot LL
H8 : adj KK A U
H9 : adj U bot J1
============================
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply IH to *H5 H9.
Subgoal 8:

Variables: J L A B LL J1 KK U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL A J1
H7 : adj KK bot LL
H8 : adj KK A U
H9 : adj U bot J1
H10 : mall U
============================
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_swap to *H7 *H3.
Subgoal 8:

Variables: J L A B LL J1 KK U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H4 : adj LL A J1
H8 : adj KK A U
H9 : adj U bot J1
H10 : mall U
H11 : adj KK (plus A B) U1
H12 : adj U1 bot L
============================
 mall J

Subgoal 9 is:
 mall J

bot_inv < apply adj_same_result to *H12 *H2.
Subgoal 8:

Variables: J L A B LL J1 KK U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H4 : adj LL A J1
H8 : adj KK A U
H9 : adj U bot J1
H10 : mall U
H11 : adj KK (plus A B) U1
H13 : perm U1 J
============================
 mall J

Subgoal 9 is:
 mall J

bot_inv < backchain mall_perm with K = U1.
Subgoal 9:

Variables: J L A B LL J1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL B J1
H5 : mall J1 *
============================
 mall J

bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 9:

Variables: J L A B LL J1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL B J1
H5 : mall J1 *
H6 : bot = plus A B /\ perm J LL \/ (exists KK, adj KK bot LL)
============================
 mall J

bot_inv < case H6.
Subgoal 9:

Variables: J L A B LL J1 KK
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL B J1
H5 : mall J1 *
H7 : adj KK bot LL
============================
 mall J

bot_inv < apply adj_swap to H7 H4.
Subgoal 9:

Variables: J L A B LL J1 KK U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL B J1
H5 : mall J1 *
H7 : adj KK bot LL
H8 : adj KK B U
H9 : adj U bot J1
============================
 mall J

bot_inv < apply IH to *H5 H9.
Subgoal 9:

Variables: J L A B LL J1 KK U
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H3 : adj LL (plus A B) L
H4 : adj LL B J1
H7 : adj KK bot LL
H8 : adj KK B U
H9 : adj U bot J1
H10 : mall U
============================
 mall J

bot_inv < apply adj_swap to *H7 *H3.
Subgoal 9:

Variables: J L A B LL J1 KK U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H2 : adj J bot L
H4 : adj LL B J1
H8 : adj KK B U
H9 : adj U bot J1
H10 : mall U
H11 : adj KK (plus A B) U1
H12 : adj U1 bot L
============================
 mall J

bot_inv < apply adj_same_result to *H12 *H2.
Subgoal 9:

Variables: J L A B LL J1 KK U U1
IH : forall J L, mall L * -> adj J bot L -> mall J
H4 : adj LL B J1
H8 : adj KK B U
H9 : adj U bot J1
H10 : mall U
H11 : adj KK (plus A B) U1
H13 : perm U1 J
============================
 mall J

bot_inv < backchain mall_perm with K = U1.
Proof completed.
Abella < Theorem par_inv : 
forall L JJ A B, mall L -> adj JJ (par A B) L ->
  (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL).


============================
 forall L JJ A B, mall L -> adj JJ (par A B) L ->
   (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)

par_inv < induction on 1.

IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
============================
 forall L JJ A B, mall L @ -> adj JJ (par A B) L ->
   (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)

par_inv < intros.

Variables: L JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H1 : mall L @
H2 : adj JJ (par A B) L
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H1.
Subgoal 1:

Variables: L JJ A B A1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj (natom A1 :: nil) (atom A1) L
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 1:

Variables: L JJ A B A1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj (natom A1 :: nil) (atom A1) L
H4 : par A B = atom A1 /\ perm JJ (natom A1 :: nil) \/
       (exists KK, adj KK (par A B) (natom A1 :: nil))
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H4.
Subgoal 1:

Variables: L JJ A B A1 KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj (natom A1 :: nil) (atom A1) L
H5 : adj KK (par A B) (natom A1 :: nil)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H5.
Subgoal 1:

Variables: L JJ A B A1 K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj (natom A1 :: nil) (atom A1) L
H6 : is_fm (natom A1)
H7 : adj K (par A B) nil
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H7.
Subgoal 2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 A1 J
H6 : mall J *
H7 : adj KK B1 K
H8 : mall K *
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 A1 J
H6 : mall J *
H7 : adj KK B1 K
H8 : mall K *
H9 : par A B = tens A1 B1 /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H9.
Subgoal 2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 A1 J
H6 : mall J *
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply merge_unadj_3 to *H4 H10.
Subgoal 2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H11 : (exists JJ, adj JJ (par A B) JJ1 /\ merge JJ KK KK1) \/
        (exists KK2, adj KK2 (par A B) KK /\ merge JJ1 KK2 KK1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H11.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to H12 *H5.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H6 : mall J *
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 A1 U
H15 : adj U (par A B) J
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply IH to *H6 *H15.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 A1 U
H16 : adj U A KK2
H17 : adj KK2 B LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H14 *H16.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H17 : adj KK2 B LL1
H18 : mall LL1
H19 : adj JJ2 A U1
H20 : adj U1 A1 KK2
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H20 *H17.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H10.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H19.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H21.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert merge U2 KK (A :: B :: KK1).
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H3.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert mall (tens A1 B1 :: A :: B :: KK1).
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H10 *H3.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2 U3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H7 : adj KK B1 K
H8 : mall K *
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result to H30 H2.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2 U3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H7 : adj KK B1 K
H8 : mall K *
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_perm_full to H31 H29.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2 U3 KK3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H7 : adj KK B1 K
H8 : mall K *
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK3 (tens A1 B1) JJ
H33 : perm KK1 KK3
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to *H2.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2 U3 KK3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H7 : adj KK B1 K
H8 : mall K *
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK3 (tens A1 B1) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert perm (tens A1 B1 :: A :: B :: KK1) (A :: B :: JJ).
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2 U3 KK3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H7 : adj KK B1 K
H8 : mall K *
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK3 (tens A1 B1) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
H35 : perm (tens A1 B1 :: A :: B :: KK1) (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H28 *H35.
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2 U3 KK3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H7 : adj KK B1 K
H8 : mall K *
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK3 (tens A1 B1) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
H36 : mall (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert adj JJ A (A :: JJ).
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2 U3 KK3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H7 : adj KK B1 K
H8 : mall K *
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK3 (tens A1 B1) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
H36 : mall (A :: B :: JJ)
H37 : adj JJ A (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert adj (A :: JJ) B (A :: B :: JJ).
Subgoal 2.1:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 JJ2 U KK2 LL1 U1 U2 U3 KK3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H7 : adj KK B1 K
H8 : mall K *
H12 : adj JJ2 (par A B) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 A U1
H21 : adj U1 B U2
H22 : adj U2 A1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge U2 KK (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK3 (tens A1 B1) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
H36 : mall (A :: B :: JJ)
H37 : adj JJ A (A :: JJ)
H38 : adj (A :: JJ) B (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H7 : adj KK B1 K
H8 : mall K *
H10 : adj KK1 (par A B) LL
H12 : adj KK2 (par A B) KK
H13 : merge JJ1 KK2 KK1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H12 *H7.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H8 : mall K *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 B1 U
H15 : adj U (par A B) K
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply IH to *H8 *H15.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 B1 U
H16 : adj U A KK3
H17 : adj KK3 B LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H14 *H16.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H17 : adj KK3 B LL1
H18 : mall LL1
H19 : adj KK2 A U1
H20 : adj U1 B1 KK3
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H20 *H17.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H10.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H19.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H21.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert merge JJ1 U2 (A :: B :: KK1).
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H3.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert mall (tens A1 B1 :: A :: B :: KK1).
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (tens A1 B1) L
H5 : adj JJ1 A1 J
H6 : mall J *
H10 : adj KK1 (par A B) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H10 *H3.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2 U3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H5 : adj JJ1 A1 J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result to H30 H2.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2 U3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H5 : adj JJ1 A1 J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_perm_full to H31 H29.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2 U3 KK4
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H5 : adj JJ1 A1 J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK4 (tens A1 B1) JJ
H33 : perm KK1 KK4
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to *H2.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2 U3 KK4
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H5 : adj JJ1 A1 J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK4 (tens A1 B1) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert perm (tens A1 B1 :: A :: B :: KK1) (A :: B :: JJ).
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2 U3 KK4
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H5 : adj JJ1 A1 J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H28 : mall (tens A1 B1 :: A :: B :: KK1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK4 (tens A1 B1) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
H35 : perm (tens A1 B1 :: A :: B :: KK1) (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H28 *H35.
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2 U3 KK4
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H5 : adj JJ1 A1 J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK4 (tens A1 B1) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
H36 : mall (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert adj JJ A (A :: JJ).
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2 U3 KK4
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H5 : adj JJ1 A1 J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK4 (tens A1 B1) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
H36 : mall (A :: B :: JJ)
H37 : adj JJ A (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert adj (A :: JJ) B (A :: B :: JJ).
Subgoal 2.2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K KK1 KK2 U KK3 LL1 U1 U2 U3 KK4
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H5 : adj JJ1 A1 J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 A U1
H21 : adj U1 B U2
H22 : adj U2 B1 LL1
H23 : is_list KK1
H24 : is_fm A
H25 : is_fm B
H26 : merge JJ1 U2 (A :: B :: KK1)
H27 : is_fm (tens A1 B1)
H29 : adj KK1 (tens A1 B1) U3
H30 : adj U3 (par A B) L
H31 : perm U3 JJ
H32 : adj KK4 (tens A1 B1) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
H36 : mall (A :: B :: JJ)
H37 : adj JJ A (A :: JJ)
H38 : adj (A :: JJ) B (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 3:

Variables: JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) (one :: nil)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H2.
Subgoal 3:

Variables: A B K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H3 : is_fm one
H4 : adj K (par A B) nil
============================
 exists KK LL, adj (one :: K) A KK /\ adj KK B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H4.
Subgoal 4:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 4:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
H7 : par A B = par A1 B1 /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H4.
Subgoal 4:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
H7 : par A B = par A1 B1 /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
H8 : is_fm A1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H5.
Subgoal 4:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
H7 : par A B = par A1 B1 /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
H8 : is_fm A1
H9 : is_fm B1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H2.
Subgoal 4:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
H7 : par A B = par A1 B1 /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H7.
Subgoal 4.1:

Variables: L JJ A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A1 B1) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : perm JJ LL
============================
 exists KK LL, adj JJ A1 KK /\ adj KK B1 LL /\ mall LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert perm (A1 :: B1 :: JJ) K.
Subgoal 4.1:

Variables: L JJ A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A1 B1) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : perm JJ LL
H12 : perm (A1 :: B1 :: JJ) K
============================
 exists KK LL, adj JJ A1 KK /\ adj KK B1 LL /\ mall LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply perm_sym to *H12.
Subgoal 4.1:

Variables: L JJ A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A1 B1) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : perm JJ LL
H13 : perm K (A1 :: B1 :: JJ)
============================
 exists KK LL, adj JJ A1 KK /\ adj KK B1 LL /\ mall LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H6 *H13.
Subgoal 4.1:

Variables: L JJ A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A1 B1) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : perm JJ LL
H14 : mall (A1 :: B1 :: JJ)
============================
 exists KK LL, adj JJ A1 KK /\ adj KK B1 LL /\ mall LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to H11 *H4.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H5 : adj J B1 K
H6 : mall K *
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H12 : adj KK A1 U
H13 : adj U (par A B) J
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H13 *H5.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H6 : mall K *
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H12 : adj KK A1 U
H14 : adj U B1 U1
H15 : adj U1 (par A B) K
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply IH to *H6 *H15.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H12 : adj KK A1 U
H14 : adj U B1 U1
H16 : adj U1 A KK1
H17 : adj KK1 B LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H14 *H16.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H12 : adj KK A1 U
H17 : adj KK1 B LL1
H18 : mall LL1
H19 : adj U A U2
H20 : adj U2 B1 KK1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H20 *H17.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H12 : adj KK A1 U
H18 : mall LL1
H19 : adj U A U2
H21 : adj U2 B U3
H22 : adj U3 B1 LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H12 *H19.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H21 : adj U2 B U3
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H24 : adj U4 A1 U2
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H24 *H21.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H26.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert mall (par A1 B1 :: U5).
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H23.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H25.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert perm (par A1 B1 :: U5) (A :: B :: JJ).
Subgoal 4.2.1:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 perm (par A1 B1 :: U5) (A :: B :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 4.2.1:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 exists A2 KK LL, adj KK A2 (par A1 B1 :: U5) /\ adj LL A2 (A :: B :: JJ) /\
   perm KK LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness B.
Subgoal 4.2.1:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 exists KK LL, adj KK B (par A1 B1 :: U5) /\ adj LL B (A :: B :: JJ) /\
   perm KK LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness par A1 B1 :: U4.
Subgoal 4.2.1:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 exists LL, adj (par A1 B1 :: U4) B (par A1 B1 :: U5) /\
   adj LL B (A :: B :: JJ) /\ perm (par A1 B1 :: U4) LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness A :: JJ.
Subgoal 4.2.1:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 adj (par A1 B1 :: U4) B (par A1 B1 :: U5) /\
   adj (A :: JJ) B (A :: B :: JJ) /\ perm (par A1 B1 :: U4) (A :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 4.2.1.1:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 adj (par A1 B1 :: U4) B (par A1 B1 :: U5)

Subgoal 4.2.1.2 is:
 adj (A :: JJ) B (A :: B :: JJ)

Subgoal 4.2.1.3 is:
 perm (par A1 B1 :: U4) (A :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 4.2.1.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 adj (A :: JJ) B (A :: B :: JJ)

Subgoal 4.2.1.3 is:
 perm (par A1 B1 :: U4) (A :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 4.2.1.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 perm (par A1 B1 :: U4) (A :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 4.2.1.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 exists A2 KK LL, adj KK A2 (par A1 B1 :: U4) /\ adj LL A2 (A :: JJ) /\
   perm KK LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness A.
Subgoal 4.2.1.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 exists KK LL, adj KK A (par A1 B1 :: U4) /\ adj LL A (A :: JJ) /\ perm KK LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness par A1 B1 :: KK.
Subgoal 4.2.1.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 exists LL, adj (par A1 B1 :: KK) A (par A1 B1 :: U4) /\
   adj LL A (A :: JJ) /\ perm (par A1 B1 :: KK) LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness JJ.
Subgoal 4.2.1.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 adj (par A1 B1 :: KK) A (par A1 B1 :: U4) /\ adj JJ A (A :: JJ) /\
   perm (par A1 B1 :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 4.2.1.3.1:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 adj (par A1 B1 :: KK) A (par A1 B1 :: U4)

Subgoal 4.2.1.3.2 is:
 adj JJ A (A :: JJ)

Subgoal 4.2.1.3.3 is:
 perm (par A1 B1 :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 4.2.1.3.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 adj JJ A (A :: JJ)

Subgoal 4.2.1.3.3 is:
 perm (par A1 B1 :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 4.2.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
============================
 perm (par A1 B1 :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H11 *H3.
Subgoal 4.2.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5 U6
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : adj KK (par A1 B1) U6
H32 : adj U6 (par A B) L
============================
 perm (par A1 B1 :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result to *H32 *H2.
Subgoal 4.2.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5 U6
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : adj KK (par A1 B1) U6
H33 : perm U6 JJ
============================
 perm (par A1 B1 :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < backchain perm_trans with K = U6.
Subgoal 4.2.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5 U6
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : adj KK (par A1 B1) U6
H33 : perm U6 JJ
============================
 perm (par A1 B1 :: KK) U6

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H31.
Subgoal 4.2.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5 U6
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : adj KK (par A1 B1) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 perm (par A1 B1 :: KK) U6

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 4.2.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5 U6
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : adj KK (par A1 B1) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 exists A KK1 LL, adj KK1 A (par A1 B1 :: KK) /\ adj LL A U6 /\ perm KK1 LL

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness par A1 B1, KK, KK.
Subgoal 4.2.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5 U6
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : adj KK (par A1 B1) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 adj KK (par A1 B1) (par A1 B1 :: KK) /\ adj KK (par A1 B1) U6 /\ perm KK KK

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 4.2.1.3.3.1:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5 U6
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : adj KK (par A1 B1) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 adj KK (par A1 B1) (par A1 B1 :: KK)

Subgoal 4.2.1.3.3.2 is:
 adj KK (par A1 B1) U6

Subgoal 4.2.1.3.3.3 is:
 perm KK KK

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 4.2.1.3.3.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5 U6
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : adj KK (par A1 B1) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 adj KK (par A1 B1) U6

Subgoal 4.2.1.3.3.3 is:
 perm KK KK

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 4.2.1.3.3.3:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5 U6
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : adj KK (par A1 B1) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 perm KK KK

Subgoal 4.2 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < backchain perm_refl.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H28 : mall (par A1 B1 :: U5)
H29 : is_fm A
H30 : is_fm B
H31 : perm (par A1 B1 :: U5) (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H28 *H31.
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK U U1 KK1 LL1 U2 U3 U4 U5
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (par A1 B1) L
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : adj KK (par A B) LL
H18 : mall LL1
H22 : adj U3 B1 LL1
H23 : adj KK A U4
H25 : adj U4 B U5
H26 : adj U5 A1 U3
H27 : is_list U5
H29 : is_fm A
H30 : is_fm B
H32 : mall (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 5:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H4 : mall LL *
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 5:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H4 : mall LL *
H5 : par A B = bot /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_2_is_o to H2.
Subgoal 5:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H4 : mall LL *
H5 : par A B = bot /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
H6 : is_fm (par A B)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H6.
Subgoal 5:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H4 : mall LL *
H5 : par A B = bot /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
H7 : is_fm A
H8 : is_fm B
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H5.
Subgoal 5:

Variables: L JJ A B LL KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H4 : mall LL *
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply IH to *H4 H9.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_3_is_list to H11.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert mall (bot :: LL1).
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H2.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert perm (bot :: LL1) (A :: B :: JJ).
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 perm (bot :: LL1) (A :: B :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 exists A1 KK LL, adj KK A1 (bot :: LL1) /\ adj LL A1 (A :: B :: JJ) /\
   perm KK LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness B.
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 exists KK LL, adj KK B (bot :: LL1) /\ adj LL B (A :: B :: JJ) /\ perm KK LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness bot :: KK1.
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 exists LL, adj (bot :: KK1) B (bot :: LL1) /\ adj LL B (A :: B :: JJ) /\
   perm (bot :: KK1) LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness A :: JJ.
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 adj (bot :: KK1) B (bot :: LL1) /\ adj (A :: JJ) B (A :: B :: JJ) /\
   perm (bot :: KK1) (A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 5.1.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 adj (bot :: KK1) B (bot :: LL1)

Subgoal 5.1.2 is:
 adj (A :: JJ) B (A :: B :: JJ)

Subgoal 5.1.3 is:
 perm (bot :: KK1) (A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 5.1.2:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 adj (A :: JJ) B (A :: B :: JJ)

Subgoal 5.1.3 is:
 perm (bot :: KK1) (A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 5.1.3:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 perm (bot :: KK1) (A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 5.1.3:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 exists A1 KK LL, adj KK A1 (bot :: KK1) /\ adj LL A1 (A :: JJ) /\ perm KK LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness A.
Subgoal 5.1.3:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 exists KK LL, adj KK A (bot :: KK1) /\ adj LL A (A :: JJ) /\ perm KK LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness bot :: KK.
Subgoal 5.1.3:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 exists LL, adj (bot :: KK) A (bot :: KK1) /\ adj LL A (A :: JJ) /\
   perm (bot :: KK) LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness JJ.
Subgoal 5.1.3:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 adj (bot :: KK) A (bot :: KK1) /\ adj JJ A (A :: JJ) /\ perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 5.1.3.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 adj (bot :: KK) A (bot :: KK1)

Subgoal 5.1.3.2 is:
 adj JJ A (A :: JJ)

Subgoal 5.1.3.3 is:
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 5.1.3.2:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 adj JJ A (A :: JJ)

Subgoal 5.1.3.3 is:
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 5.1.3.3:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
============================
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H9 *H3.
Subgoal 5.1.3.3:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H7 : is_fm A
H8 : is_fm B
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
H16 : adj KK bot U
H17 : adj U (par A B) L
============================
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result to *H17 H2.
Subgoal 5.1.3.3:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H7 : is_fm A
H8 : is_fm B
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
H16 : adj KK bot U
H18 : perm U JJ
============================
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < backchain perm_trans with K = U.
Subgoal 5.1.3.3:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H7 : is_fm A
H8 : is_fm B
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
H16 : adj KK bot U
H18 : perm U JJ
============================
 perm (bot :: KK) U

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H16.
Subgoal 5.1.3.3:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H7 : is_fm A
H8 : is_fm B
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
H16 : adj KK bot U
H18 : perm U JJ
H19 : is_list KK
============================
 perm (bot :: KK) U

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply perm_refl to H19.
Subgoal 5.1.3.3:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H7 : is_fm A
H8 : is_fm B
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
H16 : adj KK bot U
H18 : perm U JJ
H19 : is_list KK
H20 : perm KK KK
============================
 perm (bot :: KK) U

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (bot :: LL1)
H15 : is_list JJ
H16 : perm (bot :: LL1) (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H14 *H16.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL bot L
H7 : is_fm A
H8 : is_fm B
H9 : adj KK (par A B) LL
H10 : adj KK A KK1
H11 : adj KK1 B LL1
H12 : mall LL1
H13 : is_list LL1
H15 : is_list JJ
H17 : mall (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < Ht : apply adj_2_is_o to H2.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
Ht : is_fm (par A B)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case Ht.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < Ht : apply adj_2_is_o to H3.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
Ht : is_fm (wth A1 B1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case Ht.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H2.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H13 : par A B = wth A1 B1 /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H13.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H14.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to H14 *H4.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H17 : adj U (par A B) J
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply IH to *H5 *H17.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H6 : adj LL B1 K
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H20 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to H14 *H6.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H7 : mall K *
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H20 : mall LL1
H21 : adj KK B1 U1
H22 : adj U1 (par A B) K
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply IH to *H7 *H22.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H20 : mall LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H25 : mall LL2
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply perm_refl to H15.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H20 : mall LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H25 : mall LL2
H26 : perm KK KK
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H20 _ with L = A1 :: A :: B :: KK.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H25 : mall LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H25 _ with L = B1 :: A :: B :: KK.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert mall (wth A1 B1 :: A :: B :: KK).
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert perm (wth A1 B1 :: A :: B :: KK) (A :: B :: JJ).
Subgoal 6.1:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 perm (wth A1 B1 :: A :: B :: KK) (A :: B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 6.1:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (wth A1 B1 :: A :: B :: KK) /\
   adj LL A2 (A :: B :: JJ) /\ perm KK1 LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness A, wth A1 B1 :: B :: KK, B :: JJ.
Subgoal 6.1:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 adj (wth A1 B1 :: B :: KK) A (wth A1 B1 :: A :: B :: KK) /\
   adj (B :: JJ) A (A :: B :: JJ) /\ perm (wth A1 B1 :: B :: KK) (B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 6.1.1:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 adj (wth A1 B1 :: B :: KK) A (wth A1 B1 :: A :: B :: KK)

Subgoal 6.1.2 is:
 adj (B :: JJ) A (A :: B :: JJ)

Subgoal 6.1.3 is:
 perm (wth A1 B1 :: B :: KK) (B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 6.1.2:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 adj (B :: JJ) A (A :: B :: JJ)

Subgoal 6.1.3 is:
 perm (wth A1 B1 :: B :: KK) (B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 6.1.3:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 perm (wth A1 B1 :: B :: KK) (B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 6.1.3:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 exists A KK1 LL, adj KK1 A (wth A1 B1 :: B :: KK) /\ adj LL A (B :: JJ) /\
   perm KK1 LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness B, wth A1 B1 :: KK, JJ.
Subgoal 6.1.3:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 adj (wth A1 B1 :: KK) B (wth A1 B1 :: B :: KK) /\ adj JJ B (B :: JJ) /\
   perm (wth A1 B1 :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 6.1.3.1:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 adj (wth A1 B1 :: KK) B (wth A1 B1 :: B :: KK)

Subgoal 6.1.3.2 is:
 adj JJ B (B :: JJ)

Subgoal 6.1.3.3 is:
 perm (wth A1 B1 :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 6.1.3.2:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 adj JJ B (B :: JJ)

Subgoal 6.1.3.3 is:
 perm (wth A1 B1 :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 6.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
============================
 perm (wth A1 B1 :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H14 *H3.
Subgoal 6.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
H30 : adj KK (wth A1 B1) U2
H31 : adj U2 (par A B) L
============================
 perm (wth A1 B1 :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result to *H31 H2.
Subgoal 6.1.3.3:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2 U2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
H30 : adj KK (wth A1 B1) U2
H32 : perm U2 JJ
============================
 perm (wth A1 B1 :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < backchain perm_trans with K = U2.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H29 : mall (wth A1 B1 :: A :: B :: KK)
H30 : perm (wth A1 B1 :: A :: B :: KK) (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H29 *H30.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (wth A1 B1) L
H8 : is_fm A
H9 : is_fm B
H10 : is_fm A1
H11 : is_fm B1
H12 : is_list JJ
H14 : adj KK (par A B) LL
H15 : is_list KK
H16 : adj KK A1 U
H18 : adj U A KK1
H19 : adj KK1 B LL1
H21 : adj KK B1 U1
H23 : adj U1 A KK2
H24 : adj KK2 B LL2
H26 : perm KK KK
H27 : mall (A1 :: A :: B :: KK)
H28 : mall (B1 :: A :: B :: KK)
H31 : mall (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 7:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL top L
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < Ht : apply adj_2_is_o to H2.
Subgoal 7:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL top L
Ht : is_fm (par A B)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case Ht.
Subgoal 7:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL top L
H4 : is_fm A
H5 : is_fm B
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H2.
Subgoal 7:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL top L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 7:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL top L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
H7 : par A B = top /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H7.
Subgoal 7:

Variables: L JJ A B LL KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL top L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
H8 : adj KK (par A B) LL
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H8 *H3.
Subgoal 7:

Variables: L JJ A B LL KK U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
H9 : adj KK top U
H10 : adj U (par A B) L
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result to *H10 H2.
Subgoal 7:

Variables: L JJ A B LL KK U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
H9 : adj KK top U
H11 : perm U JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_perm to *H11 *H9.
Subgoal 7:

Variables: L JJ A B LL KK U KK1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
H12 : adj KK1 top JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H12.
Subgoal 7:

Variables: L JJ A B LL KK U KK1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
H12 : adj KK1 top JJ
H13 : is_list KK1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply perm_refl to H13.
Subgoal 7:

Variables: L JJ A B LL KK U KK1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
H12 : adj KK1 top JJ
H13 : is_list KK1
H14 : perm KK1 KK1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert perm (top :: A :: B :: KK1) (A :: B :: JJ).
Subgoal 7:

Variables: L JJ A B LL KK U KK1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
H12 : adj KK1 top JJ
H13 : is_list KK1
H14 : perm KK1 KK1
H15 : perm (top :: A :: B :: KK1) (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to _ *H15.
Subgoal 7:

Variables: L JJ A B LL KK U KK1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H4 : is_fm A
H5 : is_fm B
H6 : is_list JJ
H12 : adj KK1 top JJ
H13 : is_list KK1
H14 : perm KK1 KK1
H16 : mall (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < Ht : apply adj_2_is_o to H2.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
Ht : is_fm (par A B)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case Ht.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < Ht : apply adj_2_is_o to H3.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
Ht : is_fm (plus A1 B1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case Ht.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H2.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : par A B = plus A1 B1 /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H11.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H12.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to H12 *H4.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J KK U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H15 : adj U (par A B) J
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply IH to *H5 *H15.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply perm_refl to H13.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H18 : mall LL1
H19 : perm KK KK
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H18 _ with L = A1 :: A :: B :: KK.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert mall (plus A1 B1 :: A :: B :: KK).
Subgoal 8:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert perm (plus A1 B1 :: A :: B :: KK) (A :: B :: JJ).
Subgoal 8.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 perm (plus A1 B1 :: A :: B :: KK) (A :: B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 8.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (plus A1 B1 :: A :: B :: KK) /\
   adj LL A2 (A :: B :: JJ) /\ perm KK1 LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness A, plus A1 B1 :: B :: KK, B :: JJ.
Subgoal 8.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (plus A1 B1 :: B :: KK) A (plus A1 B1 :: A :: B :: KK) /\
   adj (B :: JJ) A (A :: B :: JJ) /\ perm (plus A1 B1 :: B :: KK) (B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 8.1.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (plus A1 B1 :: B :: KK) A (plus A1 B1 :: A :: B :: KK)

Subgoal 8.1.2 is:
 adj (B :: JJ) A (A :: B :: JJ)

Subgoal 8.1.3 is:
 perm (plus A1 B1 :: B :: KK) (B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 8.1.2:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (B :: JJ) A (A :: B :: JJ)

Subgoal 8.1.3 is:
 perm (plus A1 B1 :: B :: KK) (B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 8.1.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 perm (plus A1 B1 :: B :: KK) (B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 8.1.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 exists A KK1 LL, adj KK1 A (plus A1 B1 :: B :: KK) /\ adj LL A (B :: JJ) /\
   perm KK1 LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness B, plus A1 B1 :: KK, JJ.
Subgoal 8.1.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (plus A1 B1 :: KK) B (plus A1 B1 :: B :: KK) /\ adj JJ B (B :: JJ) /\
   perm (plus A1 B1 :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 8.1.3.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (plus A1 B1 :: KK) B (plus A1 B1 :: B :: KK)

Subgoal 8.1.3.2 is:
 adj JJ B (B :: JJ)

Subgoal 8.1.3.3 is:
 perm (plus A1 B1 :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 8.1.3.2:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj JJ B (B :: JJ)

Subgoal 8.1.3.3 is:
 perm (plus A1 B1 :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 8.1.3.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 perm (plus A1 B1 :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H12 *H3.
Subgoal 8.1.3.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
H22 : adj KK (plus A1 B1) U1
H23 : adj U1 (par A B) L
============================
 perm (plus A1 B1 :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result to *H23 H2.
Subgoal 8.1.3.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
H22 : adj KK (plus A1 B1) U1
H24 : perm U1 JJ
============================
 perm (plus A1 B1 :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < backchain perm_trans with K = U1.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
H22 : perm (plus A1 B1 :: A :: B :: KK) (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H21 *H22.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK A1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (A1 :: A :: B :: KK)
H23 : mall (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < Ht : apply adj_2_is_o to H2.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
Ht : is_fm (par A B)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case Ht.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < Ht : apply adj_2_is_o to H3.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
Ht : is_fm (plus A1 B1)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case Ht.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H2.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H11 : par A B = plus A1 B1 /\ perm JJ LL \/ (exists KK, adj KK (par A B) LL)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < case H11.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_1_is_list to H12.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to H12 *H4.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J KK U
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H5 : mall J *
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H15 : adj U (par A B) J
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply IH to *H5 *H15.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply perm_refl to H13.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H18 : mall LL1
H19 : perm KK KK
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H18 _ with L = B1 :: A :: B :: KK.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert mall (plus A1 B1 :: A :: B :: KK).
Subgoal 9:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < assert perm (plus A1 B1 :: A :: B :: KK) (A :: B :: JJ).
Subgoal 9.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 perm (plus A1 B1 :: A :: B :: KK) (A :: B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 9.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (plus A1 B1 :: A :: B :: KK) /\
   adj LL A2 (A :: B :: JJ) /\ perm KK1 LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness A, plus A1 B1 :: B :: KK, B :: JJ.
Subgoal 9.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (plus A1 B1 :: B :: KK) A (plus A1 B1 :: A :: B :: KK) /\
   adj (B :: JJ) A (A :: B :: JJ) /\ perm (plus A1 B1 :: B :: KK) (B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 9.1.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (plus A1 B1 :: B :: KK) A (plus A1 B1 :: A :: B :: KK)

Subgoal 9.1.2 is:
 adj (B :: JJ) A (A :: B :: JJ)

Subgoal 9.1.3 is:
 perm (plus A1 B1 :: B :: KK) (B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 9.1.2:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (B :: JJ) A (A :: B :: JJ)

Subgoal 9.1.3 is:
 perm (plus A1 B1 :: B :: KK) (B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 9.1.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 perm (plus A1 B1 :: B :: KK) (B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < unfold.
Subgoal 9.1.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 exists A KK1 LL, adj KK1 A (plus A1 B1 :: B :: KK) /\ adj LL A (B :: JJ) /\
   perm KK1 LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < witness B, plus A1 B1 :: KK, JJ.
Subgoal 9.1.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (plus A1 B1 :: KK) B (plus A1 B1 :: B :: KK) /\ adj JJ B (B :: JJ) /\
   perm (plus A1 B1 :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < split.
Subgoal 9.1.3.1:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj (plus A1 B1 :: KK) B (plus A1 B1 :: B :: KK)

Subgoal 9.1.3.2 is:
 adj JJ B (B :: JJ)

Subgoal 9.1.3.3 is:
 perm (plus A1 B1 :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 9.1.3.2:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 adj JJ B (B :: JJ)

Subgoal 9.1.3.3 is:
 perm (plus A1 B1 :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Subgoal 9.1.3.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
============================
 perm (plus A1 B1 :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_swap to *H12 *H3.
Subgoal 9.1.3.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
H22 : adj KK (plus A1 B1) U1
H23 : adj U1 (par A B) L
============================
 perm (plus A1 B1 :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply adj_same_result to *H23 H2.
Subgoal 9.1.3.3:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
H22 : adj KK (plus A1 B1) U1
H24 : perm U1 JJ
============================
 perm (plus A1 B1 :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < backchain perm_trans with K = U1.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H21 : mall (plus A1 B1 :: A :: B :: KK)
H22 : perm (plus A1 B1 :: A :: B :: KK) (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < apply mall_perm to *H21 *H22.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (par A B) L ->
       (exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL)
H2 : adj JJ (par A B) L
H3 : adj LL (plus A1 B1) L
H6 : is_fm A
H7 : is_fm B
H8 : is_fm A1
H9 : is_fm B1
H10 : is_list JJ
H12 : adj KK (par A B) LL
H13 : is_list KK
H14 : adj KK B1 U
H16 : adj U A KK1
H17 : adj KK1 B LL1
H19 : perm KK KK
H20 : mall (B1 :: A :: B :: KK)
H23 : mall (A :: B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ adj KK B LL /\ mall LL

par_inv < search.
Proof completed.
Abella < Theorem wth_inv : 
forall L JJ A B, mall L -> adj JJ (wth A B) L ->
  (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL).


============================
 forall L JJ A B, mall L -> adj JJ (wth A B) L ->
   (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)

wth_inv < induction on 1.

IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
============================
 forall L JJ A B, mall L @ -> adj JJ (wth A B) L ->
   (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)

wth_inv < intros.

Variables: L JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H1 : mall L @
H2 : adj JJ (wth A B) L
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Ht : apply adj_2_is_o to H2.

Variables: L JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H1 : mall L @
H2 : adj JJ (wth A B) L
Ht : is_fm (wth A B)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Hfm1 : case Ht.

Variables: L JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H1 : mall L @
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < HJJ : apply adj_1_is_list to H2.

Variables: L JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H1 : mall L @
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H1.
Subgoal 1:

Variables: L JJ A B A1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj (natom A1 :: nil) (atom A1) L
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 1:

Variables: L JJ A B A1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj (natom A1 :: nil) (atom A1) L
H4 : wth A B = atom A1 /\ perm JJ (natom A1 :: nil) \/
       (exists KK, adj KK (wth A B) (natom A1 :: nil))
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H4.
Subgoal 1:

Variables: L JJ A B A1 KK
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj (natom A1 :: nil) (atom A1) L
H5 : adj KK (wth A B) (natom A1 :: nil)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H5.
Subgoal 1:

Variables: L JJ A B A1 K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj (natom A1 :: nil) (atom A1) L
H6 : is_fm (natom A1)
H7 : adj K (wth A B) nil
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H7.
Subgoal 2:

Variables: L JJ A B A1 B1 LL JJ1 KK J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens A1 B1) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 A1 J
H6 : mall J *
H7 : adj KK B1 K
H8 : mall K *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename A1 to C.
Subgoal 2:

Variables: L JJ A B C B1 LL JJ1 KK J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C B1) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK B1 K
H8 : mall K *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename B1 to D.
Subgoal 2:

Variables: L JJ A B C D LL JJ1 KK J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Ht : apply adj_2_is_o to H3.
Subgoal 2:

Variables: L JJ A B C D LL JJ1 KK J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
Ht : is_fm (tens C D)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Hfm1 : case Ht.
Subgoal 2:

Variables: L JJ A B C D LL JJ1 KK J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 2:

Variables: L JJ A B C D LL JJ1 KK J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : wth A B = tens C D /\ perm JJ LL \/ (exists KK, adj KK (wth A B) LL)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H9.
Subgoal 2:

Variables: L JJ A B C D LL JJ1 KK J K KK1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H10 : adj KK1 (wth A B) LL
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply merge_unadj_3 to H4 *H10.
Subgoal 2:

Variables: L JJ A B C D LL JJ1 KK J K KK1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H11 : (exists JJ, adj JJ (wth A B) JJ1 /\ merge JJ KK KK1) \/
        (exists KK2, adj KK2 (wth A B) KK /\ merge JJ1 KK2 KK1)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H11.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H12 H5.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 C U
H15 : adj U (wth A B) J
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply IH to *H6 *H15.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 C U
H16 : adj U A KK2
H17 : mall KK2
H18 : adj U B LL1
H19 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_1_is_list to H14.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 C U
H16 : adj U A KK2
H17 : mall KK2
H18 : adj U B LL1
H19 : mall LL1
H20 : is_list JJ2
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_refl to H20.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 C U
H16 : adj U A KK2
H17 : mall KK2
H18 : adj U B LL1
H19 : mall LL1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H17 _ with L = C :: A :: JJ2.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 C U
H16 : adj U A KK2
H18 : adj U B LL1
H19 : mall LL1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = C :: B :: JJ2.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 C U
H16 : adj U A KK2
H18 : adj U B LL1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H14 H16 H18.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply merge_3_is_list to H13.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (tens C D :: A :: KK1).
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (tens C D :: B :: KK1).
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply merge_unadj_1 to H4 H12.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H28 : merge JJ2 KK LL2
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H27 H3.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H28 : merge JJ2 KK LL2
H29 : adj LL2 (tens C D) U1
H30 : adj U1 (wth A B) L
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result to *H30 *H2.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H28 : merge JJ2 KK LL2
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply merge_perm_det to *H13 *H28.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (tens C D :: A :: KK1) (A :: JJ).
Subgoal 2.1.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 perm (tens C D :: A :: KK1) (A :: JJ)

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < unfold.
Subgoal 2.1.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 exists A1 KK LL, adj KK A1 (tens C D :: A :: KK1) /\ adj LL A1 (A :: JJ) /\
   perm KK LL

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < witness A, tens C D :: KK1, JJ.
Subgoal 2.1.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 adj (tens C D :: KK1) A (tens C D :: A :: KK1) /\ adj JJ A (A :: JJ) /\
   perm (tens C D :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < split.
Subgoal 2.1.1.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 adj (tens C D :: KK1) A (tens C D :: A :: KK1)

Subgoal 2.1.1.2 is:
 adj JJ A (A :: JJ)

Subgoal 2.1.1.3 is:
 perm (tens C D :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 2.1.1.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 adj JJ A (A :: JJ)

Subgoal 2.1.1.3 is:
 perm (tens C D :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 2.1.1.3:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 perm (tens C D :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H25 : mall (tens C D :: A :: KK1)
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H33 : perm (tens C D :: A :: KK1) (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H25 *H33.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (tens C D :: B :: KK1) (B :: JJ).
Subgoal 2.1.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (A :: JJ)
============================
 perm (tens C D :: B :: KK1) (B :: JJ)

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < unfold.
Subgoal 2.1.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (A :: JJ)
============================
 exists A KK LL, adj KK A (tens C D :: B :: KK1) /\ adj LL A (B :: JJ) /\
   perm KK LL

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < witness B, tens C D :: KK1, JJ.
Subgoal 2.1.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (A :: JJ)
============================
 adj (tens C D :: KK1) B (tens C D :: B :: KK1) /\ adj JJ B (B :: JJ) /\
   perm (tens C D :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < split.
Subgoal 2.1.2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (A :: JJ)
============================
 adj (tens C D :: KK1) B (tens C D :: B :: KK1)

Subgoal 2.1.2.2 is:
 adj JJ B (B :: JJ)

Subgoal 2.1.2.3 is:
 perm (tens C D :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 2.1.2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (A :: JJ)
============================
 adj JJ B (B :: JJ)

Subgoal 2.1.2.3 is:
 perm (tens C D :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 2.1.2.3:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (A :: JJ)
============================
 perm (tens C D :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H26 : mall (tens C D :: B :: KK1)
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (A :: JJ)
H35 : perm (tens C D :: B :: KK1) (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H26 *H35.
Subgoal 2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 JJ2 U KK2 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj JJ2 (wth A B) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (C :: A :: JJ2)
H23 : mall (C :: B :: JJ2)
H24 : is_list KK1
H27 : adj LL2 (wth A B) LL
H29 : adj LL2 (tens C D) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (A :: JJ)
H36 : mall (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H12 H7.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
H8 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 D U
H15 : adj U (wth A B) K
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply IH to *H8 *H15.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 D U
H16 : adj U A KK3
H17 : mall KK3
H18 : adj U B LL1
H19 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_1_is_list to H14.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 D U
H16 : adj U A KK3
H17 : mall KK3
H18 : adj U B LL1
H19 : mall LL1
H20 : is_list KK2
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_refl to H20.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 D U
H16 : adj U A KK3
H17 : mall KK3
H18 : adj U B LL1
H19 : mall LL1
H20 : is_list KK2
H21 : perm KK2 KK2
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H17 _ with L = D :: A :: KK2.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 D U
H16 : adj U A KK3
H18 : adj U B LL1
H19 : mall LL1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = D :: B :: KK2.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 D U
H16 : adj U A KK3
H18 : adj U B LL1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H14 H16 H18.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply merge_3_is_list to H13.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert merge JJ1 (A :: KK2) (A :: KK1).
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (tens C D :: A :: KK1).
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert merge JJ1 (B :: KK2) (B :: KK1).
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (tens C D :: B :: KK1).
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply merge_unadj_2 to H4 H12.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H30 : merge JJ1 KK2 LL2
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H29 H3.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H30 : merge JJ1 KK2 LL2
H31 : adj LL2 (tens C D) U1
H32 : adj U1 (wth A B) L
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result to *H32 *H2.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H30 : merge JJ1 KK2 LL2
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply merge_perm_det to *H13 *H30.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (tens C D :: A :: KK1) (A :: JJ).
Subgoal 2.2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 perm (tens C D :: A :: KK1) (A :: JJ)

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < unfold.
Subgoal 2.2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 exists A1 KK LL, adj KK A1 (tens C D :: A :: KK1) /\ adj LL A1 (A :: JJ) /\
   perm KK LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < witness A, tens C D :: KK1, JJ.
Subgoal 2.2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 adj (tens C D :: KK1) A (tens C D :: A :: KK1) /\ adj JJ A (A :: JJ) /\
   perm (tens C D :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < split.
Subgoal 2.2.1.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 adj (tens C D :: KK1) A (tens C D :: A :: KK1)

Subgoal 2.2.1.2 is:
 adj JJ A (A :: JJ)

Subgoal 2.2.1.3 is:
 perm (tens C D :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 2.2.1.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 adj JJ A (A :: JJ)

Subgoal 2.2.1.3 is:
 perm (tens C D :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 2.2.1.3:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 perm (tens C D :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H26 : mall (tens C D :: A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H35 : perm (tens C D :: A :: KK1) (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H26 *H35.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (tens C D :: B :: KK1) (B :: JJ).
Subgoal 2.2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (A :: JJ)
============================
 perm (tens C D :: B :: KK1) (B :: JJ)

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < unfold.
Subgoal 2.2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (A :: JJ)
============================
 exists A KK LL, adj KK A (tens C D :: B :: KK1) /\ adj LL A (B :: JJ) /\
   perm KK LL

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < witness B, tens C D :: KK1, JJ.
Subgoal 2.2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (A :: JJ)
============================
 adj (tens C D :: KK1) B (tens C D :: B :: KK1) /\ adj JJ B (B :: JJ) /\
   perm (tens C D :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < split.
Subgoal 2.2.2.1:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (A :: JJ)
============================
 adj (tens C D :: KK1) B (tens C D :: B :: KK1)

Subgoal 2.2.2.2 is:
 adj JJ B (B :: JJ)

Subgoal 2.2.2.3 is:
 perm (tens C D :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 2.2.2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (A :: JJ)
============================
 adj JJ B (B :: JJ)

Subgoal 2.2.2.3 is:
 perm (tens C D :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 2.2.2.3:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (A :: JJ)
============================
 perm (tens C D :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H28 : mall (tens C D :: B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (A :: JJ)
H37 : perm (tens C D :: B :: KK1) (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H28 *H37.
Subgoal 2.2:

Variables: L JJ A B C D LL JJ1 KK J K KK1 KK2 U KK3 LL1 LL2 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (tens C D) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 C J
H6 : mall J *
H7 : adj KK D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H12 : adj KK2 (wth A B) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (D :: A :: KK2)
H23 : mall (D :: B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (A :: KK2) (A :: KK1)
H27 : merge JJ1 (B :: KK2) (B :: KK1)
H29 : adj LL2 (wth A B) LL
H31 : adj LL2 (tens C D) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (A :: JJ)
H38 : mall (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 3:

Variables: JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) (one :: nil)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H2.
Subgoal 3:

Variables: A B K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list (one :: K)
H3 : is_fm one
H4 : adj K (wth A B) nil
============================
 exists KK LL, adj (one :: K) A KK /\ mall KK /\ adj (one :: K) B LL /\
   mall LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H4.
Subgoal 4:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par A1 B1) L
H4 : adj LL A1 J
H5 : adj J B1 K
H6 : mall K *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename A1 to C.
Subgoal 4:

Variables: L JJ A B C B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C B1) L
H4 : adj LL C J
H5 : adj J B1 K
H6 : mall K *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename B1 to D.
Subgoal 4:

Variables: L JJ A B C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
H4 : adj LL C J
H5 : adj J D K
H6 : mall K *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Ht : apply adj_2_is_o to H3.
Subgoal 4:

Variables: L JJ A B C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
H4 : adj LL C J
H5 : adj J D K
H6 : mall K *
Ht : is_fm (par C D)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Hfm1 : case Ht.
Subgoal 4:

Variables: L JJ A B C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
H4 : adj LL C J
H5 : adj J D K
H6 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 4:

Variables: L JJ A B C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
H4 : adj LL C J
H5 : adj J D K
H6 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : wth A B = par C D /\ perm JJ LL \/ (exists KK, adj KK (wth A B) LL)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H7.
Subgoal 4:

Variables: L JJ A B C D LL J K KK
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
H4 : adj LL C J
H5 : adj J D K
H6 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H8 *H4.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
H5 : adj J D K
H6 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H10 : adj U (wth A B) J
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to *H10 *H5.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
H6 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H12 : adj U1 (wth A B) K
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply IH to *H6 *H12.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H14 : mall KK1
H15 : adj U1 B LL1
H16 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_1_is_list to H8.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H14 : mall KK1
H15 : adj U1 B LL1
H16 : mall LL1
H17 : is_list KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_refl to H17.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H14 : mall KK1
H15 : adj U1 B LL1
H16 : mall LL1
H17 : is_list KK
H18 : perm KK KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H14 _ with L = A :: C :: D :: KK.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H16 : mall LL1
H17 : is_list KK
H18 : perm KK KK
H19 : mall (A :: C :: D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H16 _ with L = B :: C :: D :: KK.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H19 : mall (A :: C :: D :: KK)
H20 : mall (B :: C :: D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (A :: par C D :: KK).
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H19 : mall (A :: C :: D :: KK)
H20 : mall (B :: C :: D :: KK)
H21 : mall (A :: par C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H19.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H20 : mall (B :: C :: D :: KK)
H21 : mall (A :: par C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (B :: par C D :: KK).
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H20 : mall (B :: C :: D :: KK)
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H20.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H8 H3.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H24 : adj U2 (wth A B) L
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result to *H24 *H2.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (A :: par C D :: KK) (A :: JJ).
Subgoal 4.1:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
============================
 perm (A :: par C D :: KK) (A :: JJ)

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < unfold.
Subgoal 4.1:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
============================
 exists A1 KK1 LL, adj KK1 A1 (A :: par C D :: KK) /\ adj LL A1 (A :: JJ) /\
   perm KK1 LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < witness A, par C D :: KK, JJ.
Subgoal 4.1:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
============================
 adj (par C D :: KK) A (A :: par C D :: KK) /\ adj JJ A (A :: JJ) /\
   perm (par C D :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < split.
Subgoal 4.1.1:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
============================
 adj (par C D :: KK) A (A :: par C D :: KK)

Subgoal 4.1.2 is:
 adj JJ A (A :: JJ)

Subgoal 4.1.3 is:
 perm (par C D :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 4.1.2:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
============================
 adj JJ A (A :: JJ)

Subgoal 4.1.3 is:
 perm (par C D :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 4.1.3:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
============================
 perm (par C D :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U2.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (A :: par C D :: KK)
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H26 : perm (A :: par C D :: KK) (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H21 *H26.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H27 : mall (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (B :: par C D :: KK) (B :: JJ).
Subgoal 4.2:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H27 : mall (A :: JJ)
============================
 perm (B :: par C D :: KK) (B :: JJ)

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < unfold.
Subgoal 4.2:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H27 : mall (A :: JJ)
============================
 exists A KK1 LL, adj KK1 A (B :: par C D :: KK) /\ adj LL A (B :: JJ) /\
   perm KK1 LL

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < witness B, par C D :: KK, JJ.
Subgoal 4.2:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H27 : mall (A :: JJ)
============================
 adj (par C D :: KK) B (B :: par C D :: KK) /\ adj JJ B (B :: JJ) /\
   perm (par C D :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < split.
Subgoal 4.2.1:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H27 : mall (A :: JJ)
============================
 adj (par C D :: KK) B (B :: par C D :: KK)

Subgoal 4.2.2 is:
 adj JJ B (B :: JJ)

Subgoal 4.2.3 is:
 perm (par C D :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 4.2.2:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H27 : mall (A :: JJ)
============================
 adj JJ B (B :: JJ)

Subgoal 4.2.3 is:
 perm (par C D :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 4.2.3:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H27 : mall (A :: JJ)
============================
 perm (par C D :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U2.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (B :: par C D :: KK)
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H27 : mall (A :: JJ)
H28 : perm (B :: par C D :: KK) (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H22 *H28.
Subgoal 4:

Variables: L JJ A B C D LL J K KK U U1 KK1 LL1 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (par C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK (wth A B) LL
H9 : adj KK C U
H11 : adj U D U1
H13 : adj U1 A KK1
H15 : adj U1 B LL1
H17 : is_list KK
H18 : perm KK KK
H23 : adj KK (par C D) U2
H25 : perm U2 JJ
H27 : mall (A :: JJ)
H29 : mall (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 5:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL bot L
H4 : mall LL *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 5:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL bot L
H4 : mall LL *
H5 : wth A B = bot /\ perm JJ LL \/ (exists KK, adj KK (wth A B) LL)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H5.
Subgoal 5:

Variables: L JJ A B LL KK
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL bot L
H4 : mall LL *
H6 : adj KK (wth A B) LL
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply IH to *H4 H6.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL bot L
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H8 : mall KK1
H9 : adj KK B LL1
H10 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_1_is_list to H7.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL bot L
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H8 : mall KK1
H9 : adj KK B LL1
H10 : mall LL1
H11 : is_list KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_refl to H11.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL bot L
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H8 : mall KK1
H9 : adj KK B LL1
H10 : mall LL1
H11 : is_list KK
H12 : perm KK KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H8 _ with L = A :: KK.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL bot L
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H10 : mall LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H10 _ with L = B :: KK.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL bot L
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H6 *H3.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H16 : adj U (wth A B) L
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result to *H16 *H2.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (A :: bot :: KK) (A :: JJ).
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
============================
 perm (A :: bot :: KK) (A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < unfold.
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
============================
 exists A1 KK1 LL, adj KK1 A1 (A :: bot :: KK) /\ adj LL A1 (A :: JJ) /\
   perm KK1 LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < witness A, bot :: KK, JJ.
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
============================
 adj (bot :: KK) A (A :: bot :: KK) /\ adj JJ A (A :: JJ) /\
   perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < split.
Subgoal 5.1.1:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
============================
 adj (bot :: KK) A (A :: bot :: KK)

Subgoal 5.1.2 is:
 adj JJ A (A :: JJ)

Subgoal 5.1.3 is:
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 5.1.2:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
============================
 adj JJ A (A :: JJ)

Subgoal 5.1.3 is:
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 5.1.3:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
============================
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H18 : perm (A :: bot :: KK) (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to _ *H18.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (A :: KK)
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H13.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (B :: bot :: KK) (B :: JJ).
Subgoal 5.2:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
============================
 perm (B :: bot :: KK) (B :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < unfold.
Subgoal 5.2:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
============================
 exists A KK1 LL, adj KK1 A (B :: bot :: KK) /\ adj LL A (B :: JJ) /\
   perm KK1 LL

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < witness B, bot :: KK, JJ.
Subgoal 5.2:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
============================
 adj (bot :: KK) B (B :: bot :: KK) /\ adj JJ B (B :: JJ) /\
   perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < split.
Subgoal 5.2.1:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
============================
 adj (bot :: KK) B (B :: bot :: KK)

Subgoal 5.2.2 is:
 adj JJ B (B :: JJ)

Subgoal 5.2.3 is:
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 5.2.2:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
============================
 adj JJ B (B :: JJ)

Subgoal 5.2.3 is:
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 5.2.3:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
============================
 perm (bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
H20 : perm (B :: bot :: KK) (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to _ *H20.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (B :: KK)
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
H21 : mall (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H14.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H6 : adj KK (wth A B) LL
H7 : adj KK A KK1
H9 : adj KK B LL1
H11 : is_list KK
H12 : perm KK KK
H15 : adj KK bot U
H17 : perm U JJ
H19 : mall (A :: JJ)
H21 : mall (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename A1 to C.
Subgoal 6:

Variables: L JJ A B C B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C B1) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL B1 K
H7 : mall K *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename B1 to D.
Subgoal 6:

Variables: L JJ A B C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Ht : apply adj_2_is_o to H3.
Subgoal 6:

Variables: L JJ A B C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
Ht : is_fm (wth C D)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Hfm1 : case Ht.
Subgoal 6:

Variables: L JJ A B C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 6:

Variables: L JJ A B C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : wth A B = wth C D /\ perm JJ LL \/ (exists KK, adj KK (wth A B) LL)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H8.
Subgoal 6.1:

Variables: L JJ C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth C D) L
Hfm1 : is_fm C
Hfm2 : is_fm D
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : perm JJ LL
============================
 exists KK LL, adj JJ C KK /\ mall KK /\ adj JJ D LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_1_is_list to H9.
Subgoal 6.1:

Variables: L JJ C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth C D) L
Hfm1 : is_fm C
Hfm2 : is_fm D
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : perm JJ LL
H10 : is_list JJ
============================
 exists KK LL, adj JJ C KK /\ mall KK /\ adj JJ D LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_refl to H10.
Subgoal 6.1:

Variables: L JJ C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth C D) L
Hfm1 : is_fm C
Hfm2 : is_fm D
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : perm JJ LL
H10 : is_list JJ
H11 : perm JJ JJ
============================
 exists KK LL, adj JJ C KK /\ mall KK /\ adj JJ D LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_sym to *H9.
Subgoal 6.1:

Variables: L JJ C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth C D) L
Hfm1 : is_fm C
Hfm2 : is_fm D
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H10 : is_list JJ
H11 : perm JJ JJ
H12 : perm LL JJ
============================
 exists KK LL, adj JJ C KK /\ mall KK /\ adj JJ D LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H5 _ with L = C :: JJ.
Subgoal 6.1:

Variables: L JJ C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth C D) L
Hfm1 : is_fm C
Hfm2 : is_fm D
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H10 : is_list JJ
H11 : perm JJ JJ
H12 : perm LL JJ
H13 : mall (C :: JJ)
============================
 exists KK LL, adj JJ C KK /\ mall KK /\ adj JJ D LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H7 _ with L = D :: JJ.
Subgoal 6.1:

Variables: L JJ C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth C D) L
Hfm1 : is_fm C
Hfm2 : is_fm D
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H6 : adj LL D K
Hfm3 : is_fm C
Hfm4 : is_fm D
H10 : is_list JJ
H11 : perm JJ JJ
H12 : perm LL JJ
H13 : mall (C :: JJ)
H14 : mall (D :: JJ)
============================
 exists KK LL, adj JJ C KK /\ mall KK /\ adj JJ D LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H4 : adj LL C J
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H9 *H4.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H5 : mall J *
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H11 : adj U (wth A B) J
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply IH to *H5 *H11.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H12 : adj U A KK1
H13 : mall KK1
H14 : adj U B LL1
H15 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_1_is_list to H9.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H12 : adj U A KK1
H13 : mall KK1
H14 : adj U B LL1
H15 : mall LL1
H16 : is_list KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_refl to H16.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H12 : adj U A KK1
H13 : mall KK1
H14 : adj U B LL1
H15 : mall LL1
H16 : is_list KK
H17 : perm KK KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H13 _ with L = C :: A :: KK.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H12 : adj U A KK1
H14 : adj U B LL1
H15 : mall LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (C :: A :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H15 _ with L = C :: B :: KK.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H6 : adj LL D K
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H12 : adj U A KK1
H14 : adj U B LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (C :: A :: KK)
H19 : mall (C :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H9 *H6.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
H7 : mall K *
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H12 : adj U A KK1
H14 : adj U B LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (C :: A :: KK)
H19 : mall (C :: B :: KK)
H20 : adj KK D U1
H21 : adj U1 (wth A B) K
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply IH to *H7 *H21.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H12 : adj U A KK1
H14 : adj U B LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (C :: A :: KK)
H19 : mall (C :: B :: KK)
H20 : adj KK D U1
H22 : adj U1 A KK2
H23 : mall KK2
H24 : adj U1 B LL2
H25 : mall LL2
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H23 _ with L = D :: A :: KK.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H12 : adj U A KK1
H14 : adj U B LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (C :: A :: KK)
H19 : mall (C :: B :: KK)
H20 : adj KK D U1
H22 : adj U1 A KK2
H24 : adj U1 B LL2
H25 : mall LL2
H26 : mall (D :: A :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H25 _ with L = D :: B :: KK.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H10 : adj KK C U
H12 : adj U A KK1
H14 : adj U B LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (C :: A :: KK)
H19 : mall (C :: B :: KK)
H20 : adj KK D U1
H22 : adj U1 A KK2
H24 : adj U1 B LL2
H26 : mall (D :: A :: KK)
H27 : mall (D :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H10 H12 H14 H20 H22 H24.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H16 : is_list KK
H17 : perm KK KK
H18 : mall (C :: A :: KK)
H19 : mall (C :: B :: KK)
H26 : mall (D :: A :: KK)
H27 : mall (D :: B :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (A :: wth C D :: KK).
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H16 : is_list KK
H17 : perm KK KK
H18 : mall (C :: A :: KK)
H19 : mall (C :: B :: KK)
H26 : mall (D :: A :: KK)
H27 : mall (D :: B :: KK)
H28 : mall (A :: wth C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (B :: wth C D :: KK).
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H16 : is_list KK
H17 : perm KK KK
H18 : mall (C :: A :: KK)
H19 : mall (C :: B :: KK)
H26 : mall (D :: A :: KK)
H27 : mall (D :: B :: KK)
H28 : mall (A :: wth C D :: KK)
H29 : mall (B :: wth C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H18 H19 H26 H27.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H16 : is_list KK
H17 : perm KK KK
H28 : mall (A :: wth C D :: KK)
H29 : mall (B :: wth C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (wth C D :: KK) JJ.
Subgoal 6.2.1:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H16 : is_list KK
H17 : perm KK KK
H28 : mall (A :: wth C D :: KK)
H29 : mall (B :: wth C D :: KK)
============================
 perm (wth C D :: KK) JJ

Subgoal 6.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to *H9 *H3.
Subgoal 6.2.1:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
Hfm3 : is_fm C
Hfm4 : is_fm D
H16 : is_list KK
H17 : perm KK KK
H28 : mall (A :: wth C D :: KK)
H29 : mall (B :: wth C D :: KK)
H30 : adj KK (wth C D) U2
H31 : adj U2 (wth A B) L
============================
 perm (wth C D :: KK) JJ

Subgoal 6.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result to *H31 *H2.
Subgoal 6.2.1:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2 U2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
Hfm3 : is_fm C
Hfm4 : is_fm D
H16 : is_list KK
H17 : perm KK KK
H28 : mall (A :: wth C D :: KK)
H29 : mall (B :: wth C D :: KK)
H30 : adj KK (wth C D) U2
H32 : perm U2 JJ
============================
 perm (wth C D :: KK) JJ

Subgoal 6.2 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U2.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H16 : is_list KK
H17 : perm KK KK
H28 : mall (A :: wth C D :: KK)
H29 : mall (B :: wth C D :: KK)
H30 : perm (wth C D :: KK) JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H28 _ with L = A :: JJ.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H16 : is_list KK
H17 : perm KK KK
H29 : mall (B :: wth C D :: KK)
H30 : perm (wth C D :: KK) JJ
H31 : mall (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H29 _ with L = B :: JJ.
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK U KK1 LL1 U1 KK2 LL2
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (wth C D) L
Hfm3 : is_fm C
Hfm4 : is_fm D
H9 : adj KK (wth A B) LL
H16 : is_list KK
H17 : perm KK KK
H30 : perm (wth C D :: KK) JJ
H31 : mall (A :: JJ)
H32 : mall (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 7:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL top L
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 7:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL top L
H4 : wth A B = top /\ perm JJ LL \/ (exists KK, adj KK (wth A B) LL)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H4.
Subgoal 7:

Variables: L JJ A B LL KK
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL top L
H5 : adj KK (wth A B) LL
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H5 H3.
Subgoal 7:

Variables: L JJ A B LL KK U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL top L
H5 : adj KK (wth A B) LL
H6 : adj KK top U
H7 : adj U (wth A B) L
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result to *H7 *H2.
Subgoal 7:

Variables: L JJ A B LL KK U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL top L
H5 : adj KK (wth A B) LL
H6 : adj KK top U
H8 : perm U JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_perm to *H8 *H6.
Subgoal 7:

Variables: L JJ A B LL KK U KK1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL top L
H5 : adj KK (wth A B) LL
H9 : adj KK1 top JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus A1 B1) L
H4 : adj LL A1 J
H5 : mall J *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename A1 to C.
Subgoal 8:

Variables: L JJ A B C B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C B1) L
H4 : adj LL C J
H5 : mall J *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename B1 to D.
Subgoal 8:

Variables: L JJ A B C D LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
H5 : mall J *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Ht : apply adj_2_is_o to H3.
Subgoal 8:

Variables: L JJ A B C D LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
H5 : mall J *
Ht : is_fm (plus C D)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Hfm1 : case Ht.
Subgoal 8:

Variables: L JJ A B C D LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
H5 : mall J *
Hfm3 : is_fm C
Hfm4 : is_fm D
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 8:

Variables: L JJ A B C D LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
H5 : mall J *
Hfm3 : is_fm C
Hfm4 : is_fm D
H6 : wth A B = plus C D /\ perm JJ LL \/ (exists KK, adj KK (wth A B) LL)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H6.
Subgoal 8:

Variables: L JJ A B C D LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
H5 : mall J *
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H7 H4.
Subgoal 8:

Variables: L JJ A B C D LL J KK U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
H5 : mall J *
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H9 : adj U (wth A B) J
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply IH to *H5 *H9.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H11 : mall KK1
H12 : adj U B LL1
H13 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_1_is_list to H7.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H11 : mall KK1
H12 : adj U B LL1
H13 : mall LL1
H14 : is_list KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_refl to H14.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H11 : mall KK1
H12 : adj U B LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H11 _ with L = A :: C :: KK.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (A :: C :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H13 _ with L = B :: C :: KK.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (A :: C :: KK)
H17 : mall (B :: C :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (A :: plus C D :: KK).
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (A :: C :: KK)
H17 : mall (B :: C :: KK)
H18 : mall (A :: plus C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H16.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (B :: C :: KK)
H18 : mall (A :: plus C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (B :: plus C D :: KK).
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (B :: C :: KK)
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H17.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (plus C D :: KK) JJ.
Subgoal 8.1:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
============================
 perm (plus C D :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to *H7 *H3.
Subgoal 8.1:

Variables: L JJ A B C D LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
H20 : adj KK (plus C D) U1
H21 : adj U1 (wth A B) L
============================
 perm (plus C D :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result to *H21 *H2.
Subgoal 8.1:

Variables: L JJ A B C D LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
H20 : adj KK (plus C D) U1
H22 : perm U1 JJ
============================
 perm (plus C D :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
H20 : perm (plus C D :: KK) JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H18 _ with L = A :: JJ.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H19 : mall (B :: plus C D :: KK)
H20 : perm (plus C D :: KK) JJ
H21 : mall (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = B :: JJ.
Subgoal 8:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL C J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK C U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H20 : perm (plus C D :: KK) JJ
H21 : mall (A :: JJ)
H22 : mall (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus A1 B1) L
H4 : adj LL B1 J
H5 : mall J *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename A1 to C.
Subgoal 9:

Variables: L JJ A B C B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C B1) L
H4 : adj LL B1 J
H5 : mall J *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < rename B1 to D.
Subgoal 9:

Variables: L JJ A B C D LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
H5 : mall J *
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Ht : apply adj_2_is_o to H3.
Subgoal 9:

Variables: L JJ A B C D LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
H5 : mall J *
Ht : is_fm (plus C D)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < Hfm1 : case Ht.
Subgoal 9:

Variables: L JJ A B C D LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
H5 : mall J *
Hfm3 : is_fm C
Hfm4 : is_fm D
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 9:

Variables: L JJ A B C D LL J
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
H5 : mall J *
Hfm3 : is_fm C
Hfm4 : is_fm D
H6 : wth A B = plus C D /\ perm JJ LL \/ (exists KK, adj KK (wth A B) LL)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < case H6.
Subgoal 9:

Variables: L JJ A B C D LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
H5 : mall J *
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to H7 H4.
Subgoal 9:

Variables: L JJ A B C D LL J KK U
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
H5 : mall J *
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H9 : adj U (wth A B) J
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply IH to *H5 *H9.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H11 : mall KK1
H12 : adj U B LL1
H13 : mall LL1
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_1_is_list to H7.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H11 : mall KK1
H12 : adj U B LL1
H13 : mall LL1
H14 : is_list KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply perm_refl to H14.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H11 : mall KK1
H12 : adj U B LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H11 _ with L = A :: D :: KK.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (A :: D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H13 _ with L = B :: D :: KK.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (A :: D :: KK)
H17 : mall (B :: D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (A :: plus C D :: KK).
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (A :: D :: KK)
H17 : mall (B :: D :: KK)
H18 : mall (A :: plus C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H16.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (B :: D :: KK)
H18 : mall (A :: plus C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert mall (B :: plus C D :: KK).
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (B :: D :: KK)
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < clear H17.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < assert perm (plus C D :: KK) JJ.
Subgoal 9.1:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
============================
 perm (plus C D :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_swap to *H7 *H3.
Subgoal 9.1:

Variables: L JJ A B C D LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
H20 : adj KK (plus C D) U1
H21 : adj U1 (wth A B) L
============================
 perm (plus C D :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply adj_same_result to *H21 *H2.
Subgoal 9.1:

Variables: L JJ A B C D LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
H20 : adj KK (plus C D) U1
H22 : perm U1 JJ
============================
 perm (plus C D :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (A :: plus C D :: KK)
H19 : mall (B :: plus C D :: KK)
H20 : perm (plus C D :: KK) JJ
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H18 _ with L = A :: JJ.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H19 : mall (B :: plus C D :: KK)
H20 : perm (plus C D :: KK) JJ
H21 : mall (A :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = B :: JJ.
Subgoal 9:

Variables: L JJ A B C D LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (wth A B) L ->
       (exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL)
H2 : adj JJ (wth A B) L
Hfm1 : is_fm A
Hfm2 : is_fm B
HJJ : is_list JJ
H3 : adj LL (plus C D) L
H4 : adj LL D J
Hfm3 : is_fm C
Hfm4 : is_fm D
H7 : adj KK (wth A B) LL
H8 : adj KK D U
H10 : adj U A KK1
H12 : adj U B LL1
H14 : is_list KK
H15 : perm KK KK
H20 : perm (plus C D :: KK) JJ
H21 : mall (A :: JJ)
H22 : mall (B :: JJ)
============================
 exists KK LL, adj JJ A KK /\ mall KK /\ adj JJ B LL /\ mall LL

wth_inv < search.
Proof completed.
Abella < Theorem mall_cut : 
forall A B JJ J KK K LL, dual A B -> adj JJ A J -> mall J -> adj KK B K ->
  mall K -> merge JJ KK LL -> mall LL.


============================
 forall A B JJ J KK K LL, dual A B -> adj JJ A J -> mall J -> adj KK B K ->
   mall K -> merge JJ KK LL -> mall LL

mall_cut < induction on 1.

IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
============================
 forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J -> adj KK B K ->
   mall K -> merge JJ KK LL -> mall LL

mall_cut < induction on 3.

IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
============================
 forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J @@ ->
   adj KK B K -> mall K -> merge JJ KK LL -> mall LL

mall_cut < intros.

Variables: A B JJ J KK K LL
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H3 : mall J @@
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
============================
 mall LL

mall_cut < case H3.
Subgoal 1:

Variables: A B JJ J KK K LL A1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
============================
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 1:

Variables: A B JJ J KK K LL A1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H8 : A = atom A1 /\ perm JJ (natom A1 :: nil) \/
       (exists KK, adj KK A (natom A1 :: nil))
============================
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H8.
Subgoal 1.1:

Variables: B JJ J KK K LL A1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual (atom A1) B @
H2 : adj JJ (atom A1) J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H9 : perm JJ (natom A1 :: nil)
============================
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H1.
Subgoal 1.1:

Variables: JJ J KK K LL A1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H9 : perm JJ (natom A1 :: nil)
============================
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H9.
Subgoal 1.1:

Variables: JJ J KK K LL A1 A2 KK1 LL1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H10 : adj KK1 A2 JJ
H11 : adj LL1 A2 (natom A1 :: nil)
H12 : perm KK1 LL1
============================
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H11.
Subgoal 1.1.1:

Variables: JJ J KK K LL A1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H10 : adj KK1 (natom A1) JJ
H12 : perm KK1 nil
H13 : is_fm (natom A1)
H14 : is_list nil
============================
 mall LL

Subgoal 1.1.2 is:
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result to H2 H7.
Subgoal 1.1.1:

Variables: JJ J KK K LL A1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H10 : adj KK1 (natom A1) JJ
H12 : perm KK1 nil
H13 : is_fm (natom A1)
H14 : is_list nil
H15 : perm JJ (natom A1 :: nil)
============================
 mall LL

Subgoal 1.1.2 is:
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H15.
Subgoal 1.1.1:

Variables: JJ J KK K LL A1 KK1 A3 KK2 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H10 : adj KK1 (natom A1) JJ
H12 : perm KK1 nil
H13 : is_fm (natom A1)
H14 : is_list nil
H16 : adj KK2 A3 JJ
H17 : adj LL2 A3 (natom A1 :: nil)
H18 : perm KK2 LL2
============================
 mall LL

Subgoal 1.1.2 is:
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H12.
Subgoal 1.1.1.1:

Variables: JJ J KK K LL A1 A3 KK2 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H10 : adj nil (natom A1) JJ
H13 : is_fm (natom A1)
H14 : is_list nil
H16 : adj KK2 A3 JJ
H17 : adj LL2 A3 (natom A1 :: nil)
H18 : perm KK2 LL2
============================
 mall LL

Subgoal 1.1.1.2 is:
 mall LL

Subgoal 1.1.2 is:
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H10.
Subgoal 1.1.1.1:

Variables: J KK K LL A1 A3 KK2 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj (natom A1 :: nil) (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge (natom A1 :: nil) KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H13 : is_fm (natom A1)
H14 : is_list nil
H16 : adj KK2 A3 (natom A1 :: nil)
H17 : adj LL2 A3 (natom A1 :: nil)
H18 : perm KK2 LL2
H19 : is_fm (natom A1)
H20 : is_list nil
============================
 mall LL

Subgoal 1.1.1.2 is:
 mall LL

Subgoal 1.1.2 is:
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_move_12 to _ H4 H6.
Subgoal 1.1.1.1:

Variables: J KK K LL A1 A3 KK2 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj (natom A1 :: nil) (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge (natom A1 :: nil) KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H13 : is_fm (natom A1)
H14 : is_list nil
H16 : adj KK2 A3 (natom A1 :: nil)
H17 : adj LL2 A3 (natom A1 :: nil)
H18 : perm KK2 LL2
H19 : is_fm (natom A1)
H20 : is_list nil
H21 : merge nil K LL
============================
 mall LL

Subgoal 1.1.1.2 is:
 mall LL

Subgoal 1.1.2 is:
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_nil_perm to H21.
Subgoal 1.1.1.1:

Variables: J KK K LL A1 A3 KK2 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj (natom A1 :: nil) (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge (natom A1 :: nil) KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H13 : is_fm (natom A1)
H14 : is_list nil
H16 : adj KK2 A3 (natom A1 :: nil)
H17 : adj LL2 A3 (natom A1 :: nil)
H18 : perm KK2 LL2
H19 : is_fm (natom A1)
H20 : is_list nil
H21 : merge nil K LL
H22 : perm K LL
============================
 mall LL

Subgoal 1.1.1.2 is:
 mall LL

Subgoal 1.1.2 is:
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain mall_perm.
Subgoal 1.1.1.2:

Variables: JJ J KK K LL A1 KK1 A3 KK2 LL2 A4 KK3 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H10 : adj KK1 (natom A1) JJ
H13 : is_fm (natom A1)
H14 : is_list nil
H16 : adj KK2 A3 JJ
H17 : adj LL2 A3 (natom A1 :: nil)
H18 : perm KK2 LL2
H19 : adj KK3 A4 KK1
H20 : adj LL3 A4 nil
H21 : perm KK3 LL3
============================
 mall LL

Subgoal 1.1.2 is:
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H20.
Subgoal 1.1.2:

Variables: JJ J KK K LL A1 A2 KK1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (atom A1) J
H4 : adj KK (natom A1) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H10 : adj KK1 A2 JJ
H12 : perm KK1 (natom A1 :: K1)
H13 : is_fm (natom A1)
H14 : adj K1 A2 nil
============================
 mall LL

Subgoal 1.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H14.
Subgoal 1.2:

Variables: A B JJ J KK K LL A1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H9 : adj KK1 A (natom A1 :: nil)
============================
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H9.
Subgoal 1.2.1:

Variables: B JJ J KK K LL A1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual (natom A1) B @
H2 : adj JJ (natom A1) J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H10 : is_fm (natom A1)
H11 : is_list nil
============================
 mall LL

Subgoal 1.2.2 is:
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H1.
Subgoal 1.2.2:

Variables: A B JJ J KK K LL A1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (natom A1 :: nil) (atom A1) J
H10 : is_fm (natom A1)
H11 : adj K1 A nil
============================
 mall LL

Subgoal 2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H11.
Subgoal 2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H13 : A = tens A1 B1 /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H13.
Subgoal 2.1:

Variables: B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual (tens A1 B1) B @
H2 : adj JJ (tens A1 B1) J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H1.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply par_inv to H5 H4.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H18.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H20 : is_list KK2
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H11.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H20 : is_list KK2
H21 : is_list KK1
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to *H21 *H20.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply IH to H16 H11 H12 H18 H19 H22.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_2 to H22 H17.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2 L LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 AA L
H25 : merge KK1 KK LL3
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H24.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2 L LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 AA L
H25 : merge KK1 KK LL3
H26 : is_list LL3
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H9.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2 L LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 AA L
H25 : merge KK1 KK LL3
H26 : is_list LL3
H27 : is_list JJ1
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to *H27 *H26.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2 L LL3 L1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 AA L
H25 : merge KK1 KK LL3
H28 : merge JJ1 LL3 L1
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply IH to H15 H9 H10 H24 H23 H28.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2 L LL3 L1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 AA L
H25 : merge KK1 KK LL3
H28 : merge JJ1 LL3 L1
H29 : mall L1
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H14.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2 L LL3 L1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 AA L
H25 : merge KK1 KK LL3
H28 : merge JJ1 LL3 L1
H29 : mall L1
H30 : merge LL1 KK LL
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_assoc to *H8 *H25 *H28 *H30.
Subgoal 2.1:

Variables: JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KK2 LL2 L LL3 L1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (tens A1 B1) J
H4 : adj KK (par AA BB) K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H15 : dual A1 AA *
H16 : dual B1 BB *
H17 : adj KK AA KK2
H18 : adj KK2 BB LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 AA L
H29 : mall L1
H31 : perm L1 LL
============================
 mall LL

Subgoal 2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain mall_perm with K = L1.
Subgoal 2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_3 to H8 H14.
Subgoal 2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H15 : (exists JJ, adj JJ A JJ1 /\ merge JJ KK1 KK2) \/
        (exists KK, adj KK A KK1 /\ merge JJ1 KK KK2)
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H15.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H16 H9.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply add_to_merge_left to H18 H17.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U M
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 M
H21 : adj KK2 A1 M
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < rename M to UKK1.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists UKK, merge U KK UKK.
Subgoal 2.2.1.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
============================
 exists UKK, merge U KK UKK

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H19.
Subgoal 2.2.1.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : is_list U
============================
 exists UKK, merge U KK UKK

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H4.
Subgoal 2.2.1.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : is_list U
H23 : is_list KK
============================
 exists UKK, merge U KK UKK

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to H22 H23.
Subgoal 2.2.1.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : is_list U
H23 : is_list KK
H24 : merge U KK L
============================
 exists UKK, merge U KK UKK

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
Ht : exists UKK, merge U KK UKK
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Hi : apply IH1 to H1 H19 H10 H4 H5 H22.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to H22 H18.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists V, merge LL2 KK1 V.
Subgoal 2.2.1.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
============================
 exists V, merge LL2 KK1 V

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H23.
Subgoal 2.2.1.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : is_list LL2
============================
 exists V, merge LL2 KK1 V

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H11.
Subgoal 2.2.1.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : is_list LL2
H26 : is_list KK1
============================
 exists V, merge LL2 KK1 V

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to H25 H26.
Subgoal 2.2.1.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : is_list LL2
H26 : is_list KK1
H27 : merge LL2 KK1 L
============================
 exists V, merge LL2 KK1 V

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
Ht : exists V, merge LL2 KK1 V
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists VT, adj V (tens A1 B1) VT.
Subgoal 2.2.1.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
============================
 exists VT, adj V (tens A1 B1) VT

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_3_is_list to H25.
Subgoal 2.2.1.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : is_list V
============================
 exists VT, adj V (tens A1 B1) VT

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_2_is_o to H7.
Subgoal 2.2.1.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : is_list V
H27 : is_fm (tens A1 B1)
============================
 exists VT, adj V (tens A1 B1) VT

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_exists to H27 H26.
Subgoal 2.2.1.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           M
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : is_list V
H27 : is_fm (tens A1 B1)
H28 : adj V (tens A1 B1) M
============================
 exists VT, adj V (tens A1 B1) VT

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
Ht : exists VT, adj V (tens A1 B1) VT
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert mall VT.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H14 H7.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H29 : adj U1 A J
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result to H2 *H29.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H30 : perm JJ U1
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H30.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to H31 H28.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert 0 perm VT LL.
Subgoal 2.2.1.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 perm VT LL

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < unfold.
Subgoal 2.2.1.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 exists A KK LL1, adj KK A VT /\ adj LL1 A LL /\ perm KK LL1

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness tens A1 B1.
Subgoal 2.2.1.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 exists KK LL1, adj KK (tens A1 B1) VT /\ adj LL1 (tens A1 B1) LL /\
   perm KK LL1

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness V.
Subgoal 2.2.1.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 exists LL1, adj V (tens A1 B1) VT /\ adj LL1 (tens A1 B1) LL /\ perm V LL1

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness LL3.
Subgoal 2.2.1.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 adj V (tens A1 B1) VT /\ adj LL3 (tens A1 B1) LL /\ perm V LL3

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < split.
Subgoal 2.2.1.4.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 adj V (tens A1 B1) VT

Subgoal 2.2.1.4.2 is:
 adj LL3 (tens A1 B1) LL

Subgoal 2.2.1.4.3 is:
 perm V LL3

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.1.4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 adj LL3 (tens A1 B1) LL

Subgoal 2.2.1.4.3 is:
 perm V LL3

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.1.4.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 perm V LL3

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert merge KK1 JJ2 KK2.
Subgoal 2.2.1.4.3.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 merge KK1 JJ2 KK2

Subgoal 2.2.1.4.3 is:
 perm V LL3

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain merge_sym.
Subgoal 2.2.1.4.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
H34 : merge KK1 JJ2 KK2
============================
 perm V LL3

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert merge KK1 LL2 V.
Subgoal 2.2.1.4.3.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
H34 : merge KK1 JJ2 KK2
============================
 merge KK1 LL2 V

Subgoal 2.2.1.4.3 is:
 perm V LL3

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain merge_sym.
Subgoal 2.2.1.4.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
H34 : merge KK1 JJ2 KK2
H35 : merge KK1 LL2 V
============================
 perm V LL3

Subgoal 2.2.1 is:
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain merge_assoc with J = KK1, K = JJ2, L = KK, JK = KK2, KL = LL2.
Subgoal 2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 JJ2 U UKK1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj JJ2 A JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 A1 U
H19 : adj U A J1
H20 : merge U KK1 UKK1
H21 : adj KK2 A1 UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 A1 UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
H34 : perm VT LL
============================
 mall LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain mall_perm with K = VT.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H16 H11.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply add_to_merge_right to H18 H17.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U M
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U M
H21 : adj KK2 B1 M
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < rename M to UJJ1.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists UKK, merge U KK UKK.
Subgoal 2.2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
============================
 exists UKK, merge U KK UKK

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H19.
Subgoal 2.2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : is_list U
============================
 exists UKK, merge U KK UKK

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H4.
Subgoal 2.2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : is_list U
H23 : is_list KK
============================
 exists UKK, merge U KK UKK

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to H22 H23.
Subgoal 2.2.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : is_list U
H23 : is_list KK
H24 : merge U KK L
============================
 exists UKK, merge U KK UKK

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
Ht : exists UKK, merge U KK UKK
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Hi : apply IH1 to H1 H19 H12 H4 H5 H22.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to H22 H18.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists V, merge JJ1 LL2 V.
Subgoal 2.2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
============================
 exists V, merge JJ1 LL2 V

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H9.
Subgoal 2.2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : is_list JJ1
============================
 exists V, merge JJ1 LL2 V

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H23.
Subgoal 2.2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : is_list JJ1
H26 : is_list LL2
============================
 exists V, merge JJ1 LL2 V

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to H25 H26.
Subgoal 2.2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : is_list JJ1
H26 : is_list LL2
H27 : merge JJ1 LL2 L
============================
 exists V, merge JJ1 LL2 V

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
Ht : exists V, merge JJ1 LL2 V
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists VT, adj V (tens A1 B1) VT.
Subgoal 2.2.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
============================
 exists VT, adj V (tens A1 B1) VT

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_3_is_list to H25.
Subgoal 2.2.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : is_list V
============================
 exists VT, adj V (tens A1 B1) VT

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_2_is_o to H7.
Subgoal 2.2.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : is_list V
H27 : is_fm (tens A1 B1)
============================
 exists VT, adj V (tens A1 B1) VT

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_exists to H27 H26.
Subgoal 2.2.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           M
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : is_list V
H27 : is_fm (tens A1 B1)
H28 : adj V (tens A1 B1) M
============================
 exists VT, adj V (tens A1 B1) VT

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
Ht : exists VT, adj V (tens A1 B1) VT
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert mall VT.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H14 H7.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H29 : adj U1 A J
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result to H2 *H29.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H30 : perm JJ U1
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H30.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to H31 H28.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert 0 perm VT LL.
Subgoal 2.2.2.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 perm VT LL

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < unfold.
Subgoal 2.2.2.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 exists A KK LL1, adj KK A VT /\ adj LL1 A LL /\ perm KK LL1

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness tens A1 B1.
Subgoal 2.2.2.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 exists KK LL1, adj KK (tens A1 B1) VT /\ adj LL1 (tens A1 B1) LL /\
   perm KK LL1

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness V.
Subgoal 2.2.2.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 exists LL1, adj V (tens A1 B1) VT /\ adj LL1 (tens A1 B1) LL /\ perm V LL1

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness LL3.
Subgoal 2.2.2.4:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 adj V (tens A1 B1) VT /\ adj LL3 (tens A1 B1) LL /\ perm V LL3

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < split.
Subgoal 2.2.2.4.1:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 adj V (tens A1 B1) VT

Subgoal 2.2.2.4.2 is:
 adj LL3 (tens A1 B1) LL

Subgoal 2.2.2.4.3 is:
 perm V LL3

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.2.4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 adj LL3 (tens A1 B1) LL

Subgoal 2.2.2.4.3 is:
 perm V LL3

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 2.2.2.4.3:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
============================
 perm V LL3

Subgoal 2.2.2 is:
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain merge_assoc with J = JJ1, K = KK3, L = KK, JK = KK2, KL = LL2.
Subgoal 2.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 KK3 U UJJ1 UKK LL2 V
           VT U1 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (tens A1 B1) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 A1 J1
H10 : mall J1 **
H11 : adj KK1 B1 K1
H12 : mall K1 **
H14 : adj KK2 A LL1
H16 : adj KK3 A KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 B1 U
H19 : adj U A K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 B1 UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 B1 UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (tens A1 B1) VT
H27 : mall VT
H28 : adj KK2 (tens A1 B1) U1
H31 : merge U1 KK LL
H32 : adj LL3 (tens A1 B1) LL
H33 : merge KK2 KK LL3
H34 : perm VT LL
============================
 mall LL

Subgoal 3 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain mall_perm with K = VT.
Subgoal 3:

Variables: A B JJ KK K LL
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A (one :: nil)
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
============================
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H2.
Subgoal 3.1:

Variables: B KK K LL
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual one B @
H4 : adj KK B K
H5 : mall K
H6 : merge nil KK LL
H7 : is_fm one
H8 : is_list nil
============================
 mall LL

Subgoal 3.2 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H1.
Subgoal 3.1:

Variables: KK K LL
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H4 : adj KK bot K
H5 : mall K
H6 : merge nil KK LL
H7 : is_fm one
H8 : is_list nil
============================
 mall LL

Subgoal 3.2 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_nil_perm to H6.
Subgoal 3.1:

Variables: KK K LL
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H4 : adj KK bot K
H5 : mall K
H6 : merge nil KK LL
H7 : is_fm one
H8 : is_list nil
H9 : perm KK LL
============================
 mall LL

Subgoal 3.2 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply bot_inv to H5 H4.
Subgoal 3.1:

Variables: KK K LL
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H4 : adj KK bot K
H5 : mall K
H6 : merge nil KK LL
H7 : is_fm one
H8 : is_list nil
H9 : perm KK LL
H10 : mall KK
============================
 mall LL

Subgoal 3.2 is:
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain mall_perm with K = KK.
Subgoal 3.2:

Variables: A B KK K LL K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H6 : merge (one :: K1) KK LL
H7 : is_fm one
H8 : adj K1 A nil
============================
 mall LL

Subgoal 4 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H8.
Subgoal 4:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H8 : adj LL1 A1 J1
H9 : adj J1 B1 K1
H10 : mall K1 **
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 4:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H8 : adj LL1 A1 J1
H9 : adj J1 B1 K1
H10 : mall K1 **
H11 : A = par A1 B1 /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H11.
Subgoal 4.1:

Variables: B JJ J KK K LL A1 B1 LL1 J1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual (par A1 B1) B @
H2 : adj JJ (par A1 B1) J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H8 : adj LL1 A1 J1
H9 : adj J1 B1 K1
H10 : mall K1 **
H12 : perm JJ LL1
============================
 mall LL

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H1.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H8 : adj LL1 A1 J1
H9 : adj J1 B1 K1
H10 : mall K1 **
H12 : adj KK1 A LL1
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H12 *H8.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H9 : adj J1 B1 K1
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H14 : adj U A J1
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to *H14 *H9.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H15 : adj U B1 U1
H16 : adj U1 A K1
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists V, merge U1 KK V.
Subgoal 4.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H15 : adj U B1 U1
H16 : adj U1 A K1
============================
 exists V, merge U1 KK V

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H16.
Subgoal 4.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H15 : adj U B1 U1
H16 : adj U1 A K1
H17 : is_list U1
============================
 exists V, merge U1 KK V

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H4.
Subgoal 4.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H15 : adj U B1 U1
H16 : adj U1 A K1
H17 : is_list U1
H18 : is_list KK
============================
 exists V, merge U1 KK V

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to H17 H18.
Subgoal 4.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H15 : adj U B1 U1
H16 : adj U1 A K1
H17 : is_list U1
H18 : is_list KK
H19 : merge U1 KK L
============================
 exists V, merge U1 KK V

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H15 : adj U B1 U1
H16 : adj U1 A K1
Ht : exists V, merge U1 KK V
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H15 : adj U B1 U1
H16 : adj U1 A K1
H17 : merge U1 KK V
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Hi : apply IH1 to H1 H16 H10 H4 H5 H17.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H15 : adj U B1 U1
H16 : adj U1 A K1
H17 : merge U1 KK V
Hi : mall V
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to *H17 *H15.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H13 : adj KK1 A1 U
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H19 : merge U KK LL2
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to *H19 *H13.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists VV, adj LL3 (par A1 B1) VV.
Subgoal 4.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
============================
 exists VV, adj LL3 (par A1 B1) VV

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H20.
Subgoal 4.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : is_list LL3
============================
 exists VV, adj LL3 (par A1 B1) VV

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_2_is_o to H7.
Subgoal 4.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : is_list LL3
H23 : is_fm (par A1 B1)
============================
 exists VV, adj LL3 (par A1 B1) VV

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_exists to H23 H22.
Subgoal 4.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 M
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : is_list LL3
H23 : is_fm (par A1 B1)
H24 : adj LL3 (par A1 B1) M
============================
 exists VV, adj LL3 (par A1 B1) VV

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
Ht : exists VV, adj LL3 (par A1 B1) VV
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert mall VV.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert 0 perm VV LL.
Subgoal 4.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
============================
 perm VV LL

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to *H12 *H7.
Subgoal 4.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H25 : adj U2 A J
============================
 perm VV LL

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result to *H2 *H25.
Subgoal 4.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H26 : perm JJ U2
============================
 perm VV LL

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H26.
Subgoal 4.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H27 : merge U2 KK LL
============================
 perm VV LL

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to H27 H24.
Subgoal 4.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2 LL4
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H27 : merge U2 KK LL
H28 : adj LL4 (par A1 B1) LL
H29 : merge KK1 KK LL4
============================
 perm VV LL

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < unfold.
Subgoal 4.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2 LL4
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H27 : merge U2 KK LL
H28 : adj LL4 (par A1 B1) LL
H29 : merge KK1 KK LL4
============================
 exists A KK LL1, adj KK A VV /\ adj LL1 A LL /\ perm KK LL1

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness par A1 B1.
Subgoal 4.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2 LL4
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H27 : merge U2 KK LL
H28 : adj LL4 (par A1 B1) LL
H29 : merge KK1 KK LL4
============================
 exists KK LL1, adj KK (par A1 B1) VV /\ adj LL1 (par A1 B1) LL /\
   perm KK LL1

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness LL3.
Subgoal 4.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2 LL4
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H27 : merge U2 KK LL
H28 : adj LL4 (par A1 B1) LL
H29 : merge KK1 KK LL4
============================
 exists LL1, adj LL3 (par A1 B1) VV /\ adj LL1 (par A1 B1) LL /\ perm LL3 LL1

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness LL4.
Subgoal 4.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2 LL4
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H27 : merge U2 KK LL
H28 : adj LL4 (par A1 B1) LL
H29 : merge KK1 KK LL4
============================
 adj LL3 (par A1 B1) VV /\ adj LL4 (par A1 B1) LL /\ perm LL3 LL4

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < split.
Subgoal 4.2.3.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2 LL4
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H27 : merge U2 KK LL
H28 : adj LL4 (par A1 B1) LL
H29 : merge KK1 KK LL4
============================
 adj LL3 (par A1 B1) VV

Subgoal 4.2.3.2 is:
 adj LL4 (par A1 B1) LL

Subgoal 4.2.3.3 is:
 perm LL3 LL4

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 4.2.3.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2 LL4
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H27 : merge U2 KK LL
H28 : adj LL4 (par A1 B1) LL
H29 : merge KK1 KK LL4
============================
 adj LL4 (par A1 B1) LL

Subgoal 4.2.3.3 is:
 perm LL3 LL4

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 4.2.3.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV U2 LL4
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : adj KK1 (par A1 B1) U2
H27 : merge U2 KK LL
H28 : adj LL4 (par A1 B1) LL
H29 : merge KK1 KK LL4
============================
 perm LL3 LL4

Subgoal 4.2 is:
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain merge_perm_det.
Subgoal 4.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 U U1 V LL2 LL3 VV
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (par A1 B1) J
H10 : mall K1 **
H12 : adj KK1 A LL1
H16 : adj U1 A K1
Hi : mall V
H18 : adj LL2 B1 V
H20 : adj LL3 A1 LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (par A1 B1) VV
H23 : mall VV
H24 : perm VV LL
============================
 mall LL

Subgoal 5 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain mall_perm with K = VV.
Subgoal 5:

Variables: A B JJ J KK K LL LL1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 5:

Variables: A B JJ J KK K LL LL1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H9 : A = bot /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H9.
Subgoal 5.1:

Variables: B JJ J KK K LL LL1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual bot B @
H2 : adj JJ bot J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : perm JJ LL1
============================
 mall LL

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H1.
Subgoal 5.2:

Variables: A B JJ J KK K LL LL1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists V, merge KK1 KK V.
Subgoal 5.2.1:

Variables: A B JJ J KK K LL LL1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
============================
 exists V, merge KK1 KK V

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H10.
Subgoal 5.2.1:

Variables: A B JJ J KK K LL LL1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : is_list KK1
============================
 exists V, merge KK1 KK V

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H4.
Subgoal 5.2.1:

Variables: A B JJ J KK K LL LL1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : is_list KK1
H12 : is_list KK
============================
 exists V, merge KK1 KK V

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to H11 H12.
Subgoal 5.2.1:

Variables: A B JJ J KK K LL LL1 KK1 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : is_list KK1
H12 : is_list KK
H13 : merge KK1 KK L
============================
 exists V, merge KK1 KK V

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 5.2:

Variables: A B JJ J KK K LL LL1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
Ht : exists V, merge KK1 KK V
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 5.2:

Variables: A B JJ J KK K LL LL1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Hi : apply IH1 to H1 H10 H8 H4 H5 H11.
Subgoal 5.2:

Variables: A B JJ J KK K LL LL1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
Hi : mall V
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists VV, adj V bot VV.
Subgoal 5.2.2:

Variables: A B JJ J KK K LL LL1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
Hi : mall V
============================
 exists VV, adj V bot VV

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_3_is_list to H11.
Subgoal 5.2.2:

Variables: A B JJ J KK K LL LL1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : is_list V
============================
 exists VV, adj V bot VV

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_exists to _ H12 with A = bot.
Subgoal 5.2.2:

Variables: A B JJ J KK K LL LL1 KK1 V M
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : is_list V
H13 : adj V bot M
============================
 exists VV, adj V bot VV

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 5.2:

Variables: A B JJ J KK K LL LL1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
Hi : mall V
Ht : exists VV, adj V bot VV
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 5.2:

Variables: A B JJ J KK K LL LL1 KK1 V VV
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert mall VV.
Subgoal 5.2:

Variables: A B JJ J KK K LL LL1 KK1 V VV
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert 0 perm VV LL.
Subgoal 5.2.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
============================
 perm VV LL

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to *H10 *H7.
Subgoal 5.2.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H15 : adj U A J
============================
 perm VV LL

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result to *H2 *H15.
Subgoal 5.2.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H16 : perm JJ U
============================
 perm VV LL

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H16.
Subgoal 5.2.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H17 : merge U KK LL
============================
 perm VV LL

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to H17 H14.
Subgoal 5.2.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H17 : merge U KK LL
H18 : adj LL2 bot LL
H19 : merge KK1 KK LL2
============================
 perm VV LL

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < unfold.
Subgoal 5.2.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H17 : merge U KK LL
H18 : adj LL2 bot LL
H19 : merge KK1 KK LL2
============================
 exists A KK LL1, adj KK A VV /\ adj LL1 A LL /\ perm KK LL1

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness bot.
Subgoal 5.2.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H17 : merge U KK LL
H18 : adj LL2 bot LL
H19 : merge KK1 KK LL2
============================
 exists KK LL1, adj KK bot VV /\ adj LL1 bot LL /\ perm KK LL1

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness V.
Subgoal 5.2.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H17 : merge U KK LL
H18 : adj LL2 bot LL
H19 : merge KK1 KK LL2
============================
 exists LL1, adj V bot VV /\ adj LL1 bot LL /\ perm V LL1

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness LL2.
Subgoal 5.2.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H17 : merge U KK LL
H18 : adj LL2 bot LL
H19 : merge KK1 KK LL2
============================
 adj V bot VV /\ adj LL2 bot LL /\ perm V LL2

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < split.
Subgoal 5.2.3.1:

Variables: A B JJ J KK K LL LL1 KK1 V VV U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H17 : merge U KK LL
H18 : adj LL2 bot LL
H19 : merge KK1 KK LL2
============================
 adj V bot VV

Subgoal 5.2.3.2 is:
 adj LL2 bot LL

Subgoal 5.2.3.3 is:
 perm V LL2

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 5.2.3.2:

Variables: A B JJ J KK K LL LL1 KK1 V VV U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H17 : merge U KK LL
H18 : adj LL2 bot LL
H19 : merge KK1 KK LL2
============================
 adj LL2 bot LL

Subgoal 5.2.3.3 is:
 perm V LL2

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 5.2.3.3:

Variables: A B JJ J KK K LL LL1 KK1 V VV U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : adj KK1 bot U
H17 : merge U KK LL
H18 : adj LL2 bot LL
H19 : merge KK1 KK LL2
============================
 perm V LL2

Subgoal 5.2 is:
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain merge_perm_det.
Subgoal 5.2:

Variables: A B JJ J KK K LL LL1 KK1 V VV
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 bot J
H8 : mall LL1 **
H10 : adj KK1 A LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V bot VV
H13 : mall VV
H14 : perm VV LL
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain mall_perm with K = VV.
Subgoal 6:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 6:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H12 : A = wth A1 B1 /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H12.
Subgoal 6.1:

Variables: B JJ J KK K LL A1 B1 LL1 J1 K1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual (wth A1 B1) B @
H2 : adj JJ (wth A1 B1) J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : perm JJ LL1
============================
 mall LL

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H1.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : apply adj_2_is_o to H7.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Ht : is_fm (wth A1 B1)
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Hfm1 : case Ht.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Hfm1 : apply adj_2_is_o to H2.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Hfm1 : apply adj_2_is_o to H4.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H13.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H4.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists V, merge KK1 KK V.
Subgoal 6.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
============================
 exists V, merge KK1 KK V

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to H14 H15.
Subgoal 6.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK L
============================
 exists V, merge KK1 KK V

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
Ht : exists V, merge KK1 KK V
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_3_is_list to H16.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_refl to H17.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert 0 mall (wth A1 B1 :: V).
Subgoal 6.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
============================
 mall (wth A1 B1 :: V)

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H13 *H8.
Subgoal 6.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : adj KK1 A1 U
H20 : adj U A J1
============================
 mall (wth A1 B1 :: V)

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply IH1 to H1 H20 *H9 H4 H5 _ with LL = A1 :: V.
Subgoal 6.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : adj KK1 A1 U
H20 : adj U A J1
H21 : mall (A1 :: V)
============================
 mall (wth A1 B1 :: V)

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H13 *H10.
Subgoal 6.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : adj KK1 A1 U
H20 : adj U A J1
H21 : mall (A1 :: V)
H22 : adj KK1 B1 U1
H23 : adj U1 A K1
============================
 mall (wth A1 B1 :: V)

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply IH1 to H1 H23 *H11 H4 H5 _ with LL = B1 :: V.
Subgoal 6.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U U1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : adj KK1 A1 U
H20 : adj U A J1
H21 : mall (A1 :: V)
H22 : adj KK1 B1 U1
H23 : adj U1 A K1
H24 : mall (B1 :: V)
============================
 mall (wth A1 B1 :: V)

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert perm (wth A1 B1 :: V) LL.
Subgoal 6.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
============================
 perm (wth A1 B1 :: V) LL

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H13 H7.
Subgoal 6.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : adj KK1 (wth A1 B1) U
H21 : adj U A J
============================
 perm (wth A1 B1 :: V) LL

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result to *H2 *H21.
Subgoal 6.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : adj KK1 (wth A1 B1) U
H22 : perm JJ U
============================
 perm (wth A1 B1 :: V) LL

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H22.
Subgoal 6.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : adj KK1 (wth A1 B1) U
H23 : merge U KK LL
============================
 perm (wth A1 B1 :: V) LL

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to H23 H20.
Subgoal 6.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : adj KK1 (wth A1 B1) U
H23 : merge U KK LL
H24 : adj LL2 (wth A1 B1) LL
H25 : merge KK1 KK LL2
============================
 perm (wth A1 B1 :: V) LL

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < unfold.
Subgoal 6.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : adj KK1 (wth A1 B1) U
H23 : merge U KK LL
H24 : adj LL2 (wth A1 B1) LL
H25 : merge KK1 KK LL2
============================
 exists A KK LL1, adj KK A (wth A1 B1 :: V) /\ adj LL1 A LL /\ perm KK LL1

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness wth A1 B1, V, LL2.
Subgoal 6.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : adj KK1 (wth A1 B1) U
H23 : merge U KK LL
H24 : adj LL2 (wth A1 B1) LL
H25 : merge KK1 KK LL2
============================
 adj V (wth A1 B1) (wth A1 B1 :: V) /\ adj LL2 (wth A1 B1) LL /\ perm V LL2

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < split.
Subgoal 6.2.3.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : adj KK1 (wth A1 B1) U
H23 : merge U KK LL
H24 : adj LL2 (wth A1 B1) LL
H25 : merge KK1 KK LL2
============================
 adj V (wth A1 B1) (wth A1 B1 :: V)

Subgoal 6.2.3.2 is:
 adj LL2 (wth A1 B1) LL

Subgoal 6.2.3.3 is:
 perm V LL2

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 6.2.3.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : adj KK1 (wth A1 B1) U
H23 : merge U KK LL
H24 : adj LL2 (wth A1 B1) LL
H25 : merge KK1 KK LL2
============================
 adj LL2 (wth A1 B1) LL

Subgoal 6.2.3.3 is:
 perm V LL2

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 6.2.3.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : adj KK1 (wth A1 B1) U
H23 : merge U KK LL
H24 : adj LL2 (wth A1 B1) LL
H25 : merge KK1 KK LL2
============================
 perm V LL2

Subgoal 6.2 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain merge_perm_det.
Subgoal 6.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 K1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (wth A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : adj LL1 B1 K1
H11 : mall K1 **
H13 : adj KK1 A LL1
Hfm1 : is_fm A1
Hfm2 : is_fm B1
Hfm3 : is_fm A
Hfm4 : is_fm B
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (wth A1 B1 :: V)
H20 : perm (wth A1 B1 :: V) LL
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain mall_perm with K = wth A1 B1 :: V.
Subgoal 7:

Variables: A B JJ J KK K LL LL1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 top J
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 7:

Variables: A B JJ J KK K LL LL1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 top J
H8 : A = top /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H8.
Subgoal 7.1:

Variables: B JJ J KK K LL LL1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual top B @
H2 : adj JJ top J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 top J
H9 : perm JJ LL1
============================
 mall LL

Subgoal 7.2 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H1.
Subgoal 7.2:

Variables: A B JJ J KK K LL LL1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 top J
H9 : adj KK1 A LL1
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H9 H7.
Subgoal 7.2:

Variables: A B JJ J KK K LL LL1 KK1 U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 top J
H9 : adj KK1 A LL1
H10 : adj KK1 top U
H11 : adj U A J
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result to H2 H11.
Subgoal 7.2:

Variables: A B JJ J KK K LL LL1 KK1 U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 top J
H9 : adj KK1 A LL1
H10 : adj KK1 top U
H11 : adj U A J
H12 : perm JJ U
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 H12.
Subgoal 7.2:

Variables: A B JJ J KK K LL LL1 KK1 U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 top J
H9 : adj KK1 A LL1
H10 : adj KK1 top U
H11 : adj U A J
H12 : perm JJ U
H13 : merge U KK LL
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to *H13 *H10.
Subgoal 7.2:

Variables: A B JJ J KK K LL LL1 KK1 U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 top J
H9 : adj KK1 A LL1
H11 : adj U A J
H12 : perm JJ U
H14 : adj LL2 top LL
H15 : merge KK1 KK LL2
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 8:

Variables: A B JJ J KK K LL A1 B1 LL1 J1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 8:

Variables: A B JJ J KK K LL A1 B1 LL1 J1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H10 : A = plus A1 B1 /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H10.
Subgoal 8.1:

Variables: B JJ J KK K LL A1 B1 LL1 J1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual (plus A1 B1) B @
H2 : adj JJ (plus A1 B1) J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : perm JJ LL1
============================
 mall LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case H1.
Subgoal 8.1:

Variables: JJ J KK K LL A1 B1 LL1 J1 BB AA
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (plus A1 B1) J
H4 : adj KK (wth AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : dual A1 AA *
H13 : dual B1 BB *
============================
 mall LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply wth_inv to *H5 *H4.
Subgoal 8.1:

Variables: JJ J KK K LL A1 B1 LL1 J1 BB AA KK1 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (plus A1 B1) J
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : dual A1 AA *
H13 : dual B1 BB *
H14 : adj KK AA KK1
H15 : mall KK1
H16 : adj KK BB LL2
H17 : mall LL2
============================
 mall LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H11.
Subgoal 8.1:

Variables: JJ J KK K LL A1 B1 LL1 J1 BB AA KK1 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (plus A1 B1) J
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H12 : dual A1 AA *
H13 : dual B1 BB *
H14 : adj KK AA KK1
H15 : mall KK1
H16 : adj KK BB LL2
H17 : mall LL2
H18 : merge LL1 KK LL
============================
 mall LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain IH.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H11.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_1_is_list to H4.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : assert 0 exists V, merge KK1 KK V.
Subgoal 8.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
============================
 exists V, merge KK1 KK V

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_exists to H12 H13.
Subgoal 8.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK L
============================
 exists V, merge KK1 KK V

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
Ht : exists V, merge KK1 KK V
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < case Ht.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_3_is_list to H14.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_refl to H15.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Ht : apply adj_2_is_o to H7.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Ht : is_fm (plus A1 B1)
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < Hfm1 : case Ht.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert 0 mall (plus A1 B1 :: V).
Subgoal 8.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
============================
 mall (plus A1 B1 :: V)

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H11 *H8.
Subgoal 8.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : adj KK1 A1 U
H18 : adj U A J1
============================
 mall (plus A1 B1 :: V)

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply IH1 to H1 H18 *H9 H4 H5 _ with LL = A1 :: V.
Subgoal 8.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : adj KK1 A1 U
H18 : adj U A J1
H19 : mall (A1 :: V)
============================
 mall (plus A1 B1 :: V)

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < assert perm (plus A1 B1 :: V) LL.
Subgoal 8.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
============================
 perm (plus A1 B1 :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_swap to H11 H7.
Subgoal 8.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H19 : adj U A J
============================
 perm (plus A1 B1 :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply adj_same_result to *H2 *H19.
Subgoal 8.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H20 : perm JJ U
============================
 perm (plus A1 B1 :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H20.
Subgoal 8.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
============================
 perm (plus A1 B1 :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < apply merge_unadj_1 to H21 H18.
Subgoal 8.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 perm (plus A1 B1 :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < unfold.
Subgoal 8.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 exists A KK LL1, adj KK A (plus A1 B1 :: V) /\ adj LL1 A LL /\ perm KK LL1

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < witness plus A1 B1, V, LL2.
Subgoal 8.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 adj V (plus A1 B1) (plus A1 B1 :: V) /\ adj LL2 (plus A1 B1) LL /\
   perm V LL2

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < split.
Subgoal 8.2.3.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 adj V (plus A1 B1) (plus A1 B1 :: V)

Subgoal 8.2.3.2 is:
 adj LL2 (plus A1 B1) LL

Subgoal 8.2.3.3 is:
 perm V LL2

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 8.2.3.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 adj LL2 (plus A1 B1) LL

Subgoal 8.2.3.3 is:
 perm V LL2

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < search.
Subgoal 8.2.3.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 perm V LL2

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain merge_perm_det.
Subgoal 8.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 A1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : perm (plus A1 B1 :: V) LL
============================
 mall LL

Subgoal 9 is:
 mall LL

mall_cut < backchain mall_perm with K = plus A1 B1 :: V.
Subgoal 9:

Variables: A B JJ J KK K LL A1 B1 LL1 J1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
============================
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 9:

Variables: A B JJ J KK K LL A1 B1 LL1 J1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H10 : A = plus A1 B1 /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
 mall LL

mall_cut < case H10.
Subgoal 9.1:

Variables: B JJ J KK K LL A1 B1 LL1 J1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual (plus A1 B1) B @
H2 : adj JJ (plus A1 B1) J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : perm JJ LL1
============================
 mall LL

Subgoal 9.2 is:
 mall LL

mall_cut < case H1.
Subgoal 9.1:

Variables: JJ J KK K LL A1 B1 LL1 J1 BB AA
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (plus A1 B1) J
H4 : adj KK (wth AA BB) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : dual A1 AA *
H13 : dual B1 BB *
============================
 mall LL

Subgoal 9.2 is:
 mall LL

mall_cut < apply wth_inv to *H5 *H4.
Subgoal 9.1:

Variables: JJ J KK K LL A1 B1 LL1 J1 BB AA KK1 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (plus A1 B1) J
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : dual A1 AA *
H13 : dual B1 BB *
H14 : adj KK AA KK1
H15 : mall KK1
H16 : adj KK BB LL2
H17 : mall LL2
============================
 mall LL

Subgoal 9.2 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H11.
Subgoal 9.1:

Variables: JJ J KK K LL A1 B1 LL1 J1 BB AA KK1 LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H2 : adj JJ (plus A1 B1) J
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H12 : dual A1 AA *
H13 : dual B1 BB *
H14 : adj KK AA KK1
H15 : mall KK1
H16 : adj KK BB LL2
H17 : mall LL2
H18 : merge LL1 KK LL
============================
 mall LL

Subgoal 9.2 is:
 mall LL

mall_cut < backchain IH with A = B1, B = BB.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
============================
 mall LL

mall_cut < apply adj_1_is_list to H11.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
============================
 mall LL

mall_cut < apply adj_1_is_list to H4.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
============================
 mall LL

mall_cut < Ht : assert 0 exists V, merge KK1 KK V.
Subgoal 9.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
============================
 exists V, merge KK1 KK V

Subgoal 9.2 is:
 mall LL

mall_cut < apply merge_exists to H12 H13.
Subgoal 9.2.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 L
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK L
============================
 exists V, merge KK1 KK V

Subgoal 9.2 is:
 mall LL

mall_cut < search.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
Ht : exists V, merge KK1 KK V
============================
 mall LL

mall_cut < case Ht.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
============================
 mall LL

mall_cut < apply merge_3_is_list to H14.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
============================
 mall LL

mall_cut < apply perm_refl to H15.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
============================
 mall LL

mall_cut < Ht : apply adj_2_is_o to H7.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Ht : is_fm (plus A1 B1)
============================
 mall LL

mall_cut < Hfm1 : case Ht.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
============================
 mall LL

mall_cut < assert 0 mall (plus A1 B1 :: V).
Subgoal 9.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
============================
 mall (plus A1 B1 :: V)

Subgoal 9.2 is:
 mall LL

mall_cut < apply adj_swap to H11 *H8.
Subgoal 9.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : adj KK1 B1 U
H18 : adj U A J1
============================
 mall (plus A1 B1 :: V)

Subgoal 9.2 is:
 mall LL

mall_cut < apply IH1 to H1 H18 *H9 H4 H5 _ with LL = B1 :: V.
Subgoal 9.2.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : adj KK1 B1 U
H18 : adj U A J1
H19 : mall (B1 :: V)
============================
 mall (plus A1 B1 :: V)

Subgoal 9.2 is:
 mall LL

mall_cut < search.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
============================
 mall LL

mall_cut < assert perm (plus A1 B1 :: V) LL.
Subgoal 9.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
============================
 perm (plus A1 B1 :: V) LL

Subgoal 9.2 is:
 mall LL

mall_cut < apply adj_swap to H11 H7.
Subgoal 9.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H19 : adj U A J
============================
 perm (plus A1 B1 :: V) LL

Subgoal 9.2 is:
 mall LL

mall_cut < apply adj_same_result to *H2 *H19.
Subgoal 9.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H20 : perm JJ U
============================
 perm (plus A1 B1 :: V) LL

Subgoal 9.2 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H20.
Subgoal 9.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
============================
 perm (plus A1 B1 :: V) LL

Subgoal 9.2 is:
 mall LL

mall_cut < apply merge_unadj_1 to H21 H18.
Subgoal 9.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 perm (plus A1 B1 :: V) LL

Subgoal 9.2 is:
 mall LL

mall_cut < unfold.
Subgoal 9.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 exists A KK LL1, adj KK A (plus A1 B1 :: V) /\ adj LL1 A LL /\ perm KK LL1

Subgoal 9.2 is:
 mall LL

mall_cut < witness plus A1 B1, V, LL2.
Subgoal 9.2.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 adj V (plus A1 B1) (plus A1 B1 :: V) /\ adj LL2 (plus A1 B1) LL /\
   perm V LL2

Subgoal 9.2 is:
 mall LL

mall_cut < split.
Subgoal 9.2.3.1:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 adj V (plus A1 B1) (plus A1 B1 :: V)

Subgoal 9.2.3.2 is:
 adj LL2 (plus A1 B1) LL

Subgoal 9.2.3.3 is:
 perm V LL2

Subgoal 9.2 is:
 mall LL

mall_cut < search.
Subgoal 9.2.3.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 adj LL2 (plus A1 B1) LL

Subgoal 9.2.3.3 is:
 perm V LL2

Subgoal 9.2 is:
 mall LL

mall_cut < search.
Subgoal 9.2.3.3:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H4 : adj KK B K
H5 : mall K
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : adj KK1 (plus A1 B1) U
H21 : merge U KK LL
H22 : adj LL2 (plus A1 B1) LL
H23 : merge KK1 KK LL2
============================
 perm V LL2

Subgoal 9.2 is:
 mall LL

mall_cut < backchain merge_perm_det.
Subgoal 9.2:

Variables: A B JJ J KK K LL A1 B1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, dual A B * -> adj JJ A J -> mall J ->
       adj KK B K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, dual A B @ -> adj JJ A J -> mall J ** ->
        adj KK B K -> mall K -> merge JJ KK LL -> mall LL
H1 : dual A B @
H2 : adj JJ A J
H4 : adj KK B K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (plus A1 B1) J
H8 : adj LL1 B1 J1
H9 : mall J1 **
H11 : adj KK1 A LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
H16 : perm V V
Hfm1 : is_fm A1
Hfm2 : is_fm B1
H17 : mall (plus A1 B1 :: V)
H18 : perm (plus A1 B1 :: V) LL
============================
 mall LL

mall_cut < backchain mall_perm with K = plus A1 B1 :: V.
Proof completed.
Abella <