Welcome to Abella 2.0.7-dev.
Abella < Specification "mallq".
Reading specification "mallq".

Abella < Set witnesses on.

Abella < Type form fm -> o.

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

Abella < Theorem dual_is : 
forall A B, {dual A B} -> is_fm (form A) /\ is_fm (form B).


============================
 forall A B, {dual A B} -> is_fm (form A) /\ is_fm (form B)

dual_is < induction on 1.

IH : forall A B, {dual A B}* -> is_fm (form A) /\ is_fm (form B)
============================
 forall A B, {dual A B}@ -> is_fm (form A) /\ is_fm (form B)

dual_is < intros.

Variables: A B
IH : forall A B, {dual A B}* -> is_fm (form A) /\ is_fm (form B)
H1 : {dual A B}@
============================
 is_fm (form A) /\ is_fm (form B)

dual_is < case H1.
Subgoal 1:

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

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

Subgoal 3 is:
 is_fm (form one) /\ is_fm (form bot)

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

Subgoal 5 is:
 is_fm (form zero) /\ is_fm (form top)

Subgoal 6 is:
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < search.
Witness: split(unfold(is_fm, 1, true), unfold(is_fm, 2, true)).
Subgoal 2:

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

Subgoal 3 is:
 is_fm (form one) /\ is_fm (form bot)

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

Subgoal 5 is:
 is_fm (form zero) /\ is_fm (form top)

Subgoal 6 is:
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < apply IH to *H2.
Subgoal 2:

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

Subgoal 3 is:
 is_fm (form one) /\ is_fm (form bot)

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

Subgoal 5 is:
 is_fm (form zero) /\ is_fm (form top)

Subgoal 6 is:
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < apply IH to *H3.
Subgoal 2:

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

Subgoal 3 is:
 is_fm (form one) /\ is_fm (form bot)

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

Subgoal 5 is:
 is_fm (form zero) /\ is_fm (form top)

Subgoal 6 is:
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < search.
Witness: split(unfold(is_fm, 3, split(apply H4, apply H6)), unfold(is_fm, 5, split(apply H5, apply H7))).
Subgoal 3:

IH : forall A B, {dual A B}* -> is_fm (form A) /\ is_fm (form B)
============================
 is_fm (form one) /\ is_fm (form bot)

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

Subgoal 5 is:
 is_fm (form zero) /\ is_fm (form top)

Subgoal 6 is:
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < search.
Witness: split(unfold(is_fm, 4, true), unfold(is_fm, 6, true)).
Subgoal 4:

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

Subgoal 5 is:
 is_fm (form zero) /\ is_fm (form top)

Subgoal 6 is:
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < apply IH to *H2.
Subgoal 4:

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

Subgoal 5 is:
 is_fm (form zero) /\ is_fm (form top)

Subgoal 6 is:
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < apply IH to *H3.
Subgoal 4:

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

Subgoal 5 is:
 is_fm (form zero) /\ is_fm (form top)

Subgoal 6 is:
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < search.
Witness: split(unfold(is_fm, 9, split(apply H4, apply H6)), unfold(is_fm, 7, split(apply H5, apply H7))).
Subgoal 5:

IH : forall A B, {dual A B}* -> is_fm (form A) /\ is_fm (form B)
============================
 is_fm (form zero) /\ is_fm (form top)

Subgoal 6 is:
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < search.
Witness: split(unfold(is_fm, 10, true), unfold(is_fm, 8, true)).
Subgoal 6:

Variables: B1 A1
IH : forall A B, {dual A B}* -> is_fm (form A) /\ is_fm (form B)
H2 : {dual (A1 n1) (B1 n1)}*
============================
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < apply IH to *H2.
Subgoal 6:

Variables: B1 A1
IH : forall A B, {dual A B}* -> is_fm (form A) /\ is_fm (form B)
H3 : is_fm (form (A1 n1))
H4 : is_fm (form (B1 n1))
============================
 is_fm (form (exs A1)) /\ is_fm (form (all B1))

dual_is < search.
Witness: split(unfold(is_fm, 12, intros[n1] apply H3), unfold(is_fm, 11, intros[n1] apply H4)).
Proof completed.
Abella < Theorem is_fm_inst : 
forall A, nabla x, is_fm (A x) -> (forall t, is_fm (A t)).


============================
 forall A, nabla x, is_fm (A x) -> (forall t, is_fm (A t))

is_fm_inst < induction on 1.

IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
============================
 forall A, nabla x, is_fm (A x) @ -> (forall t, is_fm (A t))

is_fm_inst < intros.

Variables: A t
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H1 : is_fm (A n1) @
============================
 is_fm (A t)

is_fm_inst < case H1.
Subgoal 1:

Variables: t A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
============================
 is_fm (form (atom (A1 t)))

Subgoal 2 is:
 is_fm (form (natom (A1 t)))

Subgoal 3 is:
 is_fm (form (tens (A1 t) (B t)))

Subgoal 4 is:
 is_fm (form one)

Subgoal 5 is:
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 1, true).
Subgoal 2:

Variables: t A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
============================
 is_fm (form (natom (A1 t)))

Subgoal 3 is:
 is_fm (form (tens (A1 t) (B t)))

Subgoal 4 is:
 is_fm (form one)

Subgoal 5 is:
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 2, true).
Subgoal 3:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
============================
 is_fm (form (tens (A1 t) (B t)))

Subgoal 4 is:
 is_fm (form one)

Subgoal 5 is:
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H2.
Subgoal 3:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
============================
 is_fm (form (tens (A1 t) (B t)))

Subgoal 4 is:
 is_fm (form one)

Subgoal 5 is:
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H4 with t = t.
Subgoal 3:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
============================
 is_fm (form (tens (A1 t) (B t)))

Subgoal 4 is:
 is_fm (form one)

Subgoal 5 is:
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H3.
Subgoal 3:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
H6 : forall t, is_fm (form (B t))
============================
 is_fm (form (tens (A1 t) (B t)))

Subgoal 4 is:
 is_fm (form one)

Subgoal 5 is:
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H6 with t = t.
Subgoal 3:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
H6 : forall t, is_fm (form (B t))
H7 : is_fm (form (B t))
============================
 is_fm (form (tens (A1 t) (B t)))

Subgoal 4 is:
 is_fm (form one)

Subgoal 5 is:
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 3, split(apply H5, apply H7)).
Subgoal 4:

Variables: t
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
============================
 is_fm (form one)

Subgoal 5 is:
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 4, true).
Subgoal 5:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
============================
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H2.
Subgoal 5:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
============================
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H4 with t = t.
Subgoal 5:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
============================
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H3.
Subgoal 5:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
H6 : forall t, is_fm (form (B t))
============================
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H6 with t = t.
Subgoal 5:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
H6 : forall t, is_fm (form (B t))
H7 : is_fm (form (B t))
============================
 is_fm (form (par (A1 t) (B t)))

Subgoal 6 is:
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 5, split(apply H5, apply H7)).
Subgoal 6:

Variables: t
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
============================
 is_fm (form bot)

Subgoal 7 is:
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 6, true).
Subgoal 7:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
============================
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H2.
Subgoal 7:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
============================
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H4 with t = t.
Subgoal 7:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
============================
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H3.
Subgoal 7:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
H6 : forall t, is_fm (form (B t))
============================
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H6 with t = t.
Subgoal 7:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
H6 : forall t, is_fm (form (B t))
H7 : is_fm (form (B t))
============================
 is_fm (form (wth (A1 t) (B t)))

Subgoal 8 is:
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 7, split(apply H5, apply H7)).
Subgoal 8:

Variables: t
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
============================
 is_fm (form top)

Subgoal 9 is:
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 8, true).
Subgoal 9:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
============================
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H2.
Subgoal 9:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
============================
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H4 with t = t.
Subgoal 9:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
============================
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H3.
Subgoal 9:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
H6 : forall t, is_fm (form (B t))
============================
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H6 with t = t.
Subgoal 9:

Variables: t B A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1)) *
H3 : is_fm (form (B n1)) *
H4 : forall t, is_fm (form (A1 t))
H5 : is_fm (form (A1 t))
H6 : forall t, is_fm (form (B t))
H7 : is_fm (form (B t))
============================
 is_fm (form (plus (A1 t) (B t)))

Subgoal 10 is:
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 9, split(apply H5, apply H7)).
Subgoal 10:

Variables: t
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
============================
 is_fm (form zero)

Subgoal 11 is:
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 10, true).
Subgoal 11:

Variables: t A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1 n2)) *
============================
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H2 with A = X\form (A1 X n2).
Subgoal 11:

Variables: t A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1 n2)) *
H3 : forall t, is_fm (form (A1 t n2))
============================
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H3 with t = t.
Subgoal 11:

Variables: t A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1 n2)) *
H3 : forall t, is_fm (form (A1 t n2))
H4 : is_fm (form (A1 t n2))
============================
 is_fm (form (all (A1 t)))

Subgoal 12 is:
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 11, intros[n1] apply H4).
Subgoal 12:

Variables: t A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1 n2)) *
============================
 is_fm (form (exs (A1 t)))

is_fm_inst < apply IH to H2 with A = X\form (A1 X n2).
Subgoal 12:

Variables: t A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1 n2)) *
H3 : forall t, is_fm (form (A1 t n2))
============================
 is_fm (form (exs (A1 t)))

is_fm_inst < apply H3 with t = t.
Subgoal 12:

Variables: t A1
IH : forall A, nabla x, is_fm (A x) * -> (forall t, is_fm (A t))
H2 : is_fm (form (A1 n1 n2)) *
H3 : forall t, is_fm (form (A1 t n2))
H4 : is_fm (form (A1 t n2))
============================
 is_fm (form (exs (A1 t)))

is_fm_inst < search.
Witness: unfold(is_fm, 12, intros[n1] apply H4).
Proof completed.
Abella < Import "../../lib/merge" with is_o := is_fm.
Importing from "../../lib/merge".

Abella < Theorem is_list_inst : 
forall L, nabla x, is_list (L x) -> (forall t, is_list (L t)).


============================
 forall L, nabla x, is_list (L x) -> (forall t, is_list (L t))

is_list_inst < induction on 1.

IH : forall L, nabla x, is_list (L x) * -> (forall t, is_list (L t))
============================
 forall L, nabla x, is_list (L x) @ -> (forall t, is_list (L t))

is_list_inst < intros.

Variables: L t
IH : forall L, nabla x, is_list (L x) * -> (forall t, is_list (L t))
H1 : is_list (L n1) @
============================
 is_list (L t)

is_list_inst < case H1.
Subgoal 1:

Variables: t
IH : forall L, nabla x, is_list (L x) * -> (forall t, is_list (L t))
============================
 is_list nil

Subgoal 2 is:
 is_list (A t :: L1 t)

is_list_inst < search.
Witness: unfold(is_list, 1, true).
Subgoal 2:

Variables: t L1 A
IH : forall L, nabla x, is_list (L x) * -> (forall t, is_list (L t))
H2 : is_fm (A n1)
H3 : is_list (L1 n1) *
============================
 is_list (A t :: L1 t)

is_list_inst < apply is_fm_inst to H2.
Subgoal 2:

Variables: t L1 A
IH : forall L, nabla x, is_list (L x) * -> (forall t, is_list (L t))
H2 : is_fm (A n1)
H3 : is_list (L1 n1) *
H4 : forall t, is_fm (A t)
============================
 is_list (A t :: L1 t)

is_list_inst < apply H4 with t = t.
Subgoal 2:

Variables: t L1 A
IH : forall L, nabla x, is_list (L x) * -> (forall t, is_list (L t))
H2 : is_fm (A n1)
H3 : is_list (L1 n1) *
H4 : forall t, is_fm (A t)
H5 : is_fm (A t)
============================
 is_list (A t :: L1 t)

is_list_inst < apply IH to H3.
Subgoal 2:

Variables: t L1 A
IH : forall L, nabla x, is_list (L x) * -> (forall t, is_list (L t))
H2 : is_fm (A n1)
H3 : is_list (L1 n1) *
H4 : forall t, is_fm (A t)
H5 : is_fm (A t)
H6 : forall t, is_list (L1 t)
============================
 is_list (A t :: L1 t)

is_list_inst < apply H6 with t = t.
Subgoal 2:

Variables: t L1 A
IH : forall L, nabla x, is_list (L x) * -> (forall t, is_list (L t))
H2 : is_fm (A n1)
H3 : is_list (L1 n1) *
H4 : forall t, is_fm (A t)
H5 : is_fm (A t)
H6 : forall t, is_list (L1 t)
H7 : is_list (L1 t)
============================
 is_list (A t :: L1 t)

is_list_inst < search.
Witness: unfold(is_list, 2, split(apply H5, apply H7)).
Proof completed.
Abella < Theorem adj_inst : 
forall K A L, nabla x, adj (K x) (A x) (L x) ->
  (forall t, adj (K t) (A t) (L t)).


============================
 forall K A L, nabla x, adj (K x) (A x) (L x) ->
   (forall t, adj (K t) (A t) (L t))

adj_inst < induction on 1.

IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
============================
 forall K A L, nabla x, adj (K x) (A x) (L x) @ ->
   (forall t, adj (K t) (A t) (L t))

adj_inst < intros.

Variables: K A L t
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H1 : adj (K n1) (A n1) (L n1) @
============================
 adj (K t) (A t) (L t)

adj_inst < case H1.
Subgoal 1:

Variables: K A t
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (A n1)
H3 : is_list (K n1)
============================
 adj (K t) (A t) (A t :: K t)

Subgoal 2 is:
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < apply is_fm_inst to H2.
Subgoal 1:

Variables: K A t
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (A n1)
H3 : is_list (K n1)
H4 : forall t, is_fm (A t)
============================
 adj (K t) (A t) (A t :: K t)

Subgoal 2 is:
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < apply H4 with t = t.
Subgoal 1:

Variables: K A t
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (A n1)
H3 : is_list (K n1)
H4 : forall t, is_fm (A t)
H5 : is_fm (A t)
============================
 adj (K t) (A t) (A t :: K t)

Subgoal 2 is:
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < apply is_list_inst to H3.
Subgoal 1:

Variables: K A t
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (A n1)
H3 : is_list (K n1)
H4 : forall t, is_fm (A t)
H5 : is_fm (A t)
H6 : forall t, is_list (K t)
============================
 adj (K t) (A t) (A t :: K t)

Subgoal 2 is:
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < apply H6 with t = t.
Subgoal 1:

Variables: K A t
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (A n1)
H3 : is_list (K n1)
H4 : forall t, is_fm (A t)
H5 : is_fm (A t)
H6 : forall t, is_list (K t)
H7 : is_list (K t)
============================
 adj (K t) (A t) (A t :: K t)

Subgoal 2 is:
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < search.
Witness: unfold(adj, 1, split(apply H5, apply H7)).
Subgoal 2:

Variables: A t L1 B K1
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (B n1)
H3 : adj (K1 n1) (A n1) (L1 n1) *
============================
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < apply is_fm_inst to H2.
Subgoal 2:

Variables: A t L1 B K1
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (B n1)
H3 : adj (K1 n1) (A n1) (L1 n1) *
H4 : forall t, is_fm (B t)
============================
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < apply H4 with t = t.
Subgoal 2:

Variables: A t L1 B K1
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (B n1)
H3 : adj (K1 n1) (A n1) (L1 n1) *
H4 : forall t, is_fm (B t)
H5 : is_fm (B t)
============================
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < apply IH to H3.
Subgoal 2:

Variables: A t L1 B K1
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (B n1)
H3 : adj (K1 n1) (A n1) (L1 n1) *
H4 : forall t, is_fm (B t)
H5 : is_fm (B t)
H6 : forall t, adj (K1 t) (A t) (L1 t)
============================
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < apply H6 with t = t.
Subgoal 2:

Variables: A t L1 B K1
IH : forall K A L, nabla x, adj (K x) (A x) (L x) * ->
       (forall t, adj (K t) (A t) (L t))
H2 : is_fm (B n1)
H3 : adj (K1 n1) (A n1) (L1 n1) *
H4 : forall t, is_fm (B t)
H5 : is_fm (B t)
H6 : forall t, adj (K1 t) (A t) (L1 t)
H7 : adj (K1 t) (A t) (L1 t)
============================
 adj (B t :: K1 t) (A t) (B t :: L1 t)

adj_inst < search.
Witness: unfold(adj, 2, split(apply H5, apply H7)).
Proof completed.
Abella < Theorem merge_inst : 
forall J K L, nabla x, merge (J x) (K x) (L x) ->
  (forall t, merge (J t) (K t) (L t)).


============================
 forall J K L, nabla x, merge (J x) (K x) (L x) ->
   (forall t, merge (J t) (K t) (L t))

merge_inst < induction on 1.

IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
============================
 forall J K L, nabla x, merge (J x) (K x) (L x) @ ->
   (forall t, merge (J t) (K t) (L t))

merge_inst < intros.

Variables: J K L t
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H1 : merge (J n1) (K n1) (L n1) @
============================
 merge (J t) (K t) (L t)

merge_inst < case H1.
Subgoal 1:

Variables: t
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
============================
 merge nil nil nil

Subgoal 2 is:
 merge (J t) (K t) (L t)

Subgoal 3 is:
 merge (J t) (K t) (L t)

merge_inst < search.
Witness: unfold(merge, 1, true).
Subgoal 2:

Variables: J K L t A JJ LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (JJ n1) (A n1) (J n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (JJ n1) (K n1) (LL n1) *
============================
 merge (J t) (K t) (L t)

Subgoal 3 is:
 merge (J t) (K t) (L t)

merge_inst < apply adj_inst to H2.
Subgoal 2:

Variables: J K L t A JJ LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (JJ n1) (A n1) (J n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (JJ n1) (K n1) (LL n1) *
H5 : forall t, adj (JJ t) (A t) (J t)
============================
 merge (J t) (K t) (L t)

Subgoal 3 is:
 merge (J t) (K t) (L t)

merge_inst < apply *H5 with t = t.
Subgoal 2:

Variables: J K L t A JJ LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (JJ n1) (A n1) (J n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (JJ n1) (K n1) (LL n1) *
H6 : adj (JJ t) (A t) (J t)
============================
 merge (J t) (K t) (L t)

Subgoal 3 is:
 merge (J t) (K t) (L t)

merge_inst < apply adj_inst to H3.
Subgoal 2:

Variables: J K L t A JJ LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (JJ n1) (A n1) (J n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (JJ n1) (K n1) (LL n1) *
H6 : adj (JJ t) (A t) (J t)
H7 : forall t, adj (LL t) (A t) (L t)
============================
 merge (J t) (K t) (L t)

Subgoal 3 is:
 merge (J t) (K t) (L t)

merge_inst < apply *H7 with t = t.
Subgoal 2:

Variables: J K L t A JJ LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (JJ n1) (A n1) (J n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (JJ n1) (K n1) (LL n1) *
H6 : adj (JJ t) (A t) (J t)
H8 : adj (LL t) (A t) (L t)
============================
 merge (J t) (K t) (L t)

Subgoal 3 is:
 merge (J t) (K t) (L t)

merge_inst < apply IH to H4.
Subgoal 2:

Variables: J K L t A JJ LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (JJ n1) (A n1) (J n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (JJ n1) (K n1) (LL n1) *
H6 : adj (JJ t) (A t) (J t)
H8 : adj (LL t) (A t) (L t)
H9 : forall t, merge (JJ t) (K t) (LL t)
============================
 merge (J t) (K t) (L t)

Subgoal 3 is:
 merge (J t) (K t) (L t)

merge_inst < apply *H9 with t = t.
Subgoal 2:

Variables: J K L t A JJ LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (JJ n1) (A n1) (J n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (JJ n1) (K n1) (LL n1) *
H6 : adj (JJ t) (A t) (J t)
H8 : adj (LL t) (A t) (L t)
H10 : merge (JJ t) (K t) (LL t)
============================
 merge (J t) (K t) (L t)

Subgoal 3 is:
 merge (J t) (K t) (L t)

merge_inst < search.
Witness: unfold(merge, 2, exists[A = A t, JJ = JJ t, LL = LL t] split(split(apply H6, apply H8), apply H10)).
Subgoal 3:

Variables: J K L t A KK LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (KK n1) (A n1) (K n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (J n1) (KK n1) (LL n1) *
============================
 merge (J t) (K t) (L t)

merge_inst < apply adj_inst to H2.
Subgoal 3:

Variables: J K L t A KK LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (KK n1) (A n1) (K n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (J n1) (KK n1) (LL n1) *
H5 : forall t, adj (KK t) (A t) (K t)
============================
 merge (J t) (K t) (L t)

merge_inst < apply *H5 with t = t.
Subgoal 3:

Variables: J K L t A KK LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (KK n1) (A n1) (K n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (J n1) (KK n1) (LL n1) *
H6 : adj (KK t) (A t) (K t)
============================
 merge (J t) (K t) (L t)

merge_inst < apply adj_inst to H3.
Subgoal 3:

Variables: J K L t A KK LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (KK n1) (A n1) (K n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (J n1) (KK n1) (LL n1) *
H6 : adj (KK t) (A t) (K t)
H7 : forall t, adj (LL t) (A t) (L t)
============================
 merge (J t) (K t) (L t)

merge_inst < apply *H7 with t = t.
Subgoal 3:

Variables: J K L t A KK LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (KK n1) (A n1) (K n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (J n1) (KK n1) (LL n1) *
H6 : adj (KK t) (A t) (K t)
H8 : adj (LL t) (A t) (L t)
============================
 merge (J t) (K t) (L t)

merge_inst < apply IH to H4.
Subgoal 3:

Variables: J K L t A KK LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (KK n1) (A n1) (K n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (J n1) (KK n1) (LL n1) *
H6 : adj (KK t) (A t) (K t)
H8 : adj (LL t) (A t) (L t)
H9 : forall t, merge (J t) (KK t) (LL t)
============================
 merge (J t) (K t) (L t)

merge_inst < apply *H9 with t = t.
Subgoal 3:

Variables: J K L t A KK LL
IH : forall J K L, nabla x, merge (J x) (K x) (L x) * ->
       (forall t, merge (J t) (K t) (L t))
H2 : adj (KK n1) (A n1) (K n1)
H3 : adj (LL n1) (A n1) (L n1)
H4 : merge (J n1) (KK n1) (LL n1) *
H6 : adj (KK t) (A t) (K t)
H8 : adj (LL t) (A t) (L t)
H10 : merge (J t) (KK t) (LL t)
============================
 merge (J t) (K t) (L t)

merge_inst < search.
Witness: unfold(merge, 3, exists[A = A t, KK = KK t, LL = LL t] split(split(apply H6, apply H8), apply H10)).
Proof completed.
Abella < Define mall : (list o) -> prop by 
mall L := exists A, adj (form (natom A) :: nil) (form (atom A)) L;
mall L := exists A B LL JJ KK J K, adj LL (form (tens A B)) L /\ merge JJ KK LL /\
  adj JJ (form A) J /\ mall J /\ adj KK (form B) K /\ mall K;
mall (form one :: nil);
mall L := exists A B LL J K, adj LL (form (par A B)) L /\ adj LL (form A) J /\
  adj J (form B) K /\ mall K;
mall L := exists LL, adj LL (form bot) L /\ mall LL;
mall L := exists A B LL J K, adj LL (form (wth A B)) L /\ adj LL (form A) J /\
  mall J /\ adj LL (form B) K /\ mall K;
mall L := exists LL, adj LL (form top) L;
mall L := exists A B LL J, adj LL (form (plus A B)) L /\ adj LL (form A) J /\ mall J;
mall L := exists A B LL J, adj LL (form (plus A B)) L /\ adj LL (form B) J /\ mall J;
mall L := exists x A LL J, adj LL (form (exs A)) L /\ adj LL (form (A x)) J /\ mall J;
mall L := exists A LL, adj LL (form (all A)) L /\
  (nabla x, exists J, adj LL (form (A x)) J /\ mall J).

Abella < Theorem mall_inst : 
forall L, nabla x, mall (L x) -> (forall t, mall (L t)).


============================
 forall L, nabla x, mall (L x) -> (forall t, mall (L t))

mall_inst < induction on 1.

IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
============================
 forall L, nabla x, mall (L x) @ -> (forall t, mall (L t))

mall_inst < intros.

Variables: L t
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H1 : mall (L n1) @
============================
 mall (L t)

mall_inst < case H1.
Subgoal 1:

Variables: L t A
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (form (natom (A n1)) :: nil) (form (atom (A n1))) (L n1)
============================
 mall (L t)

Subgoal 2 is:
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 1:

Variables: L t A
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : forall t, adj (form (natom (A t)) :: nil) (form (atom (A t))) (L t)
============================
 mall (L t)

Subgoal 2 is:
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H3 with t = t.
Subgoal 1:

Variables: L t A
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : adj (form (natom (A t)) :: nil) (form (atom (A t))) (L t)
============================
 mall (L t)

Subgoal 2 is:
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 1, exists[A = A t] apply H4).
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (LL n1) (form (tens (A n1) (B n1))) (L n1)
H3 : merge (JJ n1) (KK n1) (LL n1)
H4 : adj (JJ n1) (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj (KK n1) (form (B n1)) (K n1)
H7 : mall (K n1) *
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : merge (JJ n1) (KK n1) (LL n1)
H4 : adj (JJ n1) (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj (KK n1) (form (B n1)) (K n1)
H7 : mall (K n1) *
H8 : forall t, adj (LL t) (form (tens (A t) (B t))) (L t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H8 with t = t.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : merge (JJ n1) (KK n1) (LL n1)
H4 : adj (JJ n1) (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj (KK n1) (form (B n1)) (K n1)
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply merge_inst to *H3.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : adj (JJ n1) (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj (KK n1) (form (B n1)) (K n1)
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H10 : forall t, merge (JJ t) (KK t) (LL t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H10 with t = t.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : adj (JJ n1) (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj (KK n1) (form (B n1)) (K n1)
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H11 : merge (JJ t) (KK t) (LL t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H4.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : mall (J n1) *
H6 : adj (KK n1) (form (B n1)) (K n1)
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H11 : merge (JJ t) (KK t) (LL t)
H12 : forall t, adj (JJ t) (form (A t)) (J t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H12 with t = t.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : mall (J n1) *
H6 : adj (KK n1) (form (B n1)) (K n1)
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H11 : merge (JJ t) (KK t) (LL t)
H13 : adj (JJ t) (form (A t)) (J t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply IH to *H5.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (KK n1) (form (B n1)) (K n1)
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H11 : merge (JJ t) (KK t) (LL t)
H13 : adj (JJ t) (form (A t)) (J t)
H14 : forall t, mall (J t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H14 with t = t.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (KK n1) (form (B n1)) (K n1)
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H11 : merge (JJ t) (KK t) (LL t)
H13 : adj (JJ t) (form (A t)) (J t)
H15 : mall (J t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H6.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H11 : merge (JJ t) (KK t) (LL t)
H13 : adj (JJ t) (form (A t)) (J t)
H15 : mall (J t)
H16 : forall t, adj (KK t) (form (B t)) (K t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H16 with t = t.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H11 : merge (JJ t) (KK t) (LL t)
H13 : adj (JJ t) (form (A t)) (J t)
H15 : mall (J t)
H17 : adj (KK t) (form (B t)) (K t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply IH to H7.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H11 : merge (JJ t) (KK t) (LL t)
H13 : adj (JJ t) (form (A t)) (J t)
H15 : mall (J t)
H17 : adj (KK t) (form (B t)) (K t)
H18 : forall t, mall (K t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H18 with t = t.
Subgoal 2:

Variables: L t A B LL JJ KK J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H7 : mall (K n1) *
H9 : adj (LL t) (form (tens (A t) (B t))) (L t)
H11 : merge (JJ t) (KK t) (LL t)
H13 : adj (JJ t) (form (A t)) (J t)
H15 : mall (J t)
H17 : adj (KK t) (form (B t)) (K t)
H19 : mall (K t)
============================
 mall (L t)

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

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 2, exists[A = A t, B = B t, LL = LL t, JJ = JJ t, KK = KK t, J = J t, K = K t] split(split(split(split(split(apply H9, apply H11), apply H13), apply H15), apply H17), apply H19)).
Subgoal 3:

Variables: t
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
============================
 mall (form one :: nil)

Subgoal 4 is:
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 3, true).
Subgoal 4:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (LL n1) (form (par (A n1) (B n1))) (L n1)
H3 : adj (LL n1) (form (A n1)) (J n1)
H4 : adj (J n1) (form (B n1)) (K n1)
H5 : mall (K n1) *
============================
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 4:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1)) (J n1)
H4 : adj (J n1) (form (B n1)) (K n1)
H5 : mall (K n1) *
H6 : forall t, adj (LL t) (form (par (A t) (B t))) (L t)
============================
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H6 with t = t.
Subgoal 4:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1)) (J n1)
H4 : adj (J n1) (form (B n1)) (K n1)
H5 : mall (K n1) *
H7 : adj (LL t) (form (par (A t) (B t))) (L t)
============================
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H3.
Subgoal 4:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : adj (J n1) (form (B n1)) (K n1)
H5 : mall (K n1) *
H7 : adj (LL t) (form (par (A t) (B t))) (L t)
H8 : forall t, adj (LL t) (form (A t)) (J t)
============================
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H8 with t = t.
Subgoal 4:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : adj (J n1) (form (B n1)) (K n1)
H5 : mall (K n1) *
H7 : adj (LL t) (form (par (A t) (B t))) (L t)
H9 : adj (LL t) (form (A t)) (J t)
============================
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H4.
Subgoal 4:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : mall (K n1) *
H7 : adj (LL t) (form (par (A t) (B t))) (L t)
H9 : adj (LL t) (form (A t)) (J t)
H10 : forall t, adj (J t) (form (B t)) (K t)
============================
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H10 with t = t.
Subgoal 4:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : mall (K n1) *
H7 : adj (LL t) (form (par (A t) (B t))) (L t)
H9 : adj (LL t) (form (A t)) (J t)
H11 : adj (J t) (form (B t)) (K t)
============================
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply IH to H5.
Subgoal 4:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : mall (K n1) *
H7 : adj (LL t) (form (par (A t) (B t))) (L t)
H9 : adj (LL t) (form (A t)) (J t)
H11 : adj (J t) (form (B t)) (K t)
H12 : forall t, mall (K t)
============================
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H12 with t = t.
Subgoal 4:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : mall (K n1) *
H7 : adj (LL t) (form (par (A t) (B t))) (L t)
H9 : adj (LL t) (form (A t)) (J t)
H11 : adj (J t) (form (B t)) (K t)
H13 : mall (K t)
============================
 mall (L t)

Subgoal 5 is:
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 4, exists[A = A t, B = B t, LL = LL t, J = J t, K = K t] split(split(split(apply H7, apply H9), apply H11), apply H13)).
Subgoal 5:

Variables: L t LL
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (LL n1) (form bot) (L n1)
H3 : mall (LL n1) *
============================
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 5:

Variables: L t LL
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : mall (LL n1) *
H4 : forall t, adj (LL t) (form bot) (L t)
============================
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H4 with t = t.
Subgoal 5:

Variables: L t LL
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : mall (LL n1) *
H5 : adj (LL t) (form bot) (L t)
============================
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply IH to *H3.
Subgoal 5:

Variables: L t LL
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : adj (LL t) (form bot) (L t)
H6 : forall t, mall (LL t)
============================
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H6 with t = t.
Subgoal 5:

Variables: L t LL
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : adj (LL t) (form bot) (L t)
H7 : mall (LL t)
============================
 mall (L t)

Subgoal 6 is:
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 5, exists[LL = LL t] split(apply H5, apply H7)).
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (LL n1) (form (wth (A n1) (B n1))) (L n1)
H3 : adj (LL n1) (form (A n1)) (J n1)
H4 : mall (J n1) *
H5 : adj (LL n1) (form (B n1)) (K n1)
H6 : mall (K n1) *
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1)) (J n1)
H4 : mall (J n1) *
H5 : adj (LL n1) (form (B n1)) (K n1)
H6 : mall (K n1) *
H7 : forall t, adj (LL t) (form (wth (A t) (B t))) (L t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H7 with t = t.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1)) (J n1)
H4 : mall (J n1) *
H5 : adj (LL n1) (form (B n1)) (K n1)
H6 : mall (K n1) *
H8 : adj (LL t) (form (wth (A t) (B t))) (L t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H3.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n1) *
H5 : adj (LL n1) (form (B n1)) (K n1)
H6 : mall (K n1) *
H8 : adj (LL t) (form (wth (A t) (B t))) (L t)
H9 : forall t, adj (LL t) (form (A t)) (J t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H9 with t = t.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n1) *
H5 : adj (LL n1) (form (B n1)) (K n1)
H6 : mall (K n1) *
H8 : adj (LL t) (form (wth (A t) (B t))) (L t)
H10 : adj (LL t) (form (A t)) (J t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply IH to *H4.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : adj (LL n1) (form (B n1)) (K n1)
H6 : mall (K n1) *
H8 : adj (LL t) (form (wth (A t) (B t))) (L t)
H10 : adj (LL t) (form (A t)) (J t)
H11 : forall t, mall (J t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H11 with t = t.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H5 : adj (LL n1) (form (B n1)) (K n1)
H6 : mall (K n1) *
H8 : adj (LL t) (form (wth (A t) (B t))) (L t)
H10 : adj (LL t) (form (A t)) (J t)
H12 : mall (J t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H5.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : mall (K n1) *
H8 : adj (LL t) (form (wth (A t) (B t))) (L t)
H10 : adj (LL t) (form (A t)) (J t)
H12 : mall (J t)
H13 : forall t, adj (LL t) (form (B t)) (K t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H13 with t = t.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : mall (K n1) *
H8 : adj (LL t) (form (wth (A t) (B t))) (L t)
H10 : adj (LL t) (form (A t)) (J t)
H12 : mall (J t)
H14 : adj (LL t) (form (B t)) (K t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply IH to *H6.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H8 : adj (LL t) (form (wth (A t) (B t))) (L t)
H10 : adj (LL t) (form (A t)) (J t)
H12 : mall (J t)
H14 : adj (LL t) (form (B t)) (K t)
H15 : forall t, mall (K t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H15 with t = t.
Subgoal 6:

Variables: L t A B LL J K
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H8 : adj (LL t) (form (wth (A t) (B t))) (L t)
H10 : adj (LL t) (form (A t)) (J t)
H12 : mall (J t)
H14 : adj (LL t) (form (B t)) (K t)
H16 : mall (K t)
============================
 mall (L t)

Subgoal 7 is:
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 6, exists[A = A t, B = B t, LL = LL t, J = J t, K = K t] split(split(split(split(apply H8, apply H10), apply H12), apply H14), apply H16)).
Subgoal 7:

Variables: L t LL
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (LL n1) (form top) (L n1)
============================
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 7:

Variables: L t LL
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : forall t, adj (LL t) (form top) (L t)
============================
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H3 with t = t.
Subgoal 7:

Variables: L t LL
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : adj (LL t) (form top) (L t)
============================
 mall (L t)

Subgoal 8 is:
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 7, exists[LL = LL t] apply H4).
Subgoal 8:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (LL n1) (form (plus (A n1) (B n1))) (L n1)
H3 : adj (LL n1) (form (A n1)) (J n1)
H4 : mall (J n1) *
============================
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 8:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1)) (J n1)
H4 : mall (J n1) *
H5 : forall t, adj (LL t) (form (plus (A t) (B t))) (L t)
============================
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H5 with t = t.
Subgoal 8:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1)) (J n1)
H4 : mall (J n1) *
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
============================
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H3.
Subgoal 8:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n1) *
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
H7 : forall t, adj (LL t) (form (A t)) (J t)
============================
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H7 with t = t.
Subgoal 8:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n1) *
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
H8 : adj (LL t) (form (A t)) (J t)
============================
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply IH to *H4.
Subgoal 8:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
H8 : adj (LL t) (form (A t)) (J t)
H9 : forall t, mall (J t)
============================
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H9 with t = t.
Subgoal 8:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
H8 : adj (LL t) (form (A t)) (J t)
H10 : mall (J t)
============================
 mall (L t)

Subgoal 9 is:
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 8, exists[A = A t, B = B t, LL = LL t, J = J t] split(split(apply H6, apply H8), apply H10)).
Subgoal 9:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (LL n1) (form (plus (A n1) (B n1))) (L n1)
H3 : adj (LL n1) (form (B n1)) (J n1)
H4 : mall (J n1) *
============================
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 9:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (B n1)) (J n1)
H4 : mall (J n1) *
H5 : forall t, adj (LL t) (form (plus (A t) (B t))) (L t)
============================
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H5 with t = t.
Subgoal 9:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (B n1)) (J n1)
H4 : mall (J n1) *
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
============================
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H3.
Subgoal 9:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n1) *
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
H7 : forall t, adj (LL t) (form (B t)) (J t)
============================
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H7 with t = t.
Subgoal 9:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n1) *
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
H8 : adj (LL t) (form (B t)) (J t)
============================
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply IH to *H4.
Subgoal 9:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
H8 : adj (LL t) (form (B t)) (J t)
H9 : forall t, mall (J t)
============================
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H9 with t = t.
Subgoal 9:

Variables: L t A B LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (LL t) (form (plus (A t) (B t))) (L t)
H8 : adj (LL t) (form (B t)) (J t)
H10 : mall (J t)
============================
 mall (L t)

Subgoal 10 is:
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 9, exists[A = A t, B = B t, LL = LL t, J = J t] split(split(apply H6, apply H8), apply H10)).
Subgoal 10:

Variables: L t x A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (LL n1) (form (exs (A n1))) (L n1)
H3 : adj (LL n1) (form (A n1 (x n1))) (J n1)
H4 : mall (J n1) *
============================
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 10:

Variables: L t x A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1 (x n1))) (J n1)
H4 : mall (J n1) *
H5 : forall t, adj (LL t) (form (exs (A t))) (L t)
============================
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H5 with t = t.
Subgoal 10:

Variables: L t x A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1 (x n1))) (J n1)
H4 : mall (J n1) *
H6 : adj (LL t) (form (exs (A t))) (L t)
============================
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply adj_inst to *H3.
Subgoal 10:

Variables: L t x A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n1) *
H6 : adj (LL t) (form (exs (A t))) (L t)
H7 : forall t, adj (LL t) (form (A t (x t))) (J t)
============================
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H7 with t = t.
Subgoal 10:

Variables: L t x A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n1) *
H6 : adj (LL t) (form (exs (A t))) (L t)
H8 : adj (LL t) (form (A t (x t))) (J t)
============================
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply IH to *H4.
Subgoal 10:

Variables: L t x A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (LL t) (form (exs (A t))) (L t)
H8 : adj (LL t) (form (A t (x t))) (J t)
H9 : forall t, mall (J t)
============================
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < apply *H9 with t = t.
Subgoal 10:

Variables: L t x A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (LL t) (form (exs (A t))) (L t)
H8 : adj (LL t) (form (A t (x t))) (J t)
H10 : mall (J t)
============================
 mall (L t)

Subgoal 11 is:
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 10, exists[x = x t, A = A t, LL = LL t, J = J t] split(split(apply H6, apply H8), apply H10)).
Subgoal 11:

Variables: L t A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H2 : adj (LL n1) (form (all (A n1))) (L n1)
H3 : adj (LL n1) (form (A n1 n2)) (J n2 n1)
H4 : mall (J n2 n1) *
============================
 mall (L t)

mall_inst < apply adj_inst to *H2.
Subgoal 11:

Variables: L t A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1 n2)) (J n2 n1)
H4 : mall (J n2 n1) *
H5 : forall t, adj (LL t) (form (all (A t))) (L t)
============================
 mall (L t)

mall_inst < apply *H5 with t = t.
Subgoal 11:

Variables: L t A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H3 : adj (LL n1) (form (A n1 n2)) (J n2 n1)
H4 : mall (J n2 n1) *
H6 : adj (LL t) (form (all (A t))) (L t)
============================
 mall (L t)

mall_inst < apply adj_inst to *H3 with A = X\form (A X n2).
Subgoal 11:

Variables: L t A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n2 n1) *
H6 : adj (LL t) (form (all (A t))) (L t)
H7 : forall t, adj (LL t) (form (A t n2)) (J n2 t)
============================
 mall (L t)

mall_inst < apply *H7 with t = t.
Subgoal 11:

Variables: L t A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H4 : mall (J n2 n1) *
H6 : adj (LL t) (form (all (A t))) (L t)
H8 : adj (LL t) (form (A t n2)) (J n2 t)
============================
 mall (L t)

mall_inst < apply IH to *H4 with L = X\J n2 X.
Subgoal 11:

Variables: L t A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (LL t) (form (all (A t))) (L t)
H8 : adj (LL t) (form (A t n2)) (J n2 t)
H9 : forall t, mall (J n2 t)
============================
 mall (L t)

mall_inst < apply *H9 with t = t.
Subgoal 11:

Variables: L t A LL J
IH : forall L, nabla x, mall (L x) * -> (forall t, mall (L t))
H6 : adj (LL t) (form (all (A t))) (L t)
H8 : adj (LL t) (form (A t n2)) (J n2 t)
H10 : mall (J n2 t)
============================
 mall (L t)

mall_inst < search.
Witness: unfold(mall, 11, exists[A = A t, LL = LL t] split(apply H6, intros[n1] exists[J = J n1 t] split(apply H8, apply H10))).
Proof completed.
Abella < Theorem generalized_id : 
forall A B, {dual A B} -> mall (form A :: form B :: nil).


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

generalized_id < induction on 1.

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

generalized_id < intros.

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

generalized_id < case H1.
Subgoal 1:

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < search.
Witness: unfold(mall, 1, exists[A = A1] unfold(adj, 1, split(unfold(is_fm, 1, true), unfold(is_list, 2, split(unfold(is_fm, 2, true), unfold(is_list, 1, true)))))).
Subgoal 2:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply IH to H2.
Subgoal 2:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply IH to H3.
Subgoal 2:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply dual_is to H2.
Subgoal 2:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply dual_is to H3.
Subgoal 2:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < unfold 4.
Subgoal 2:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < witness AA.
Subgoal 2:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < witness BB.
Subgoal 2:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < witness form (tens A1 B1) :: nil.
Subgoal 2:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < split.
Subgoal 2.1:

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

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

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 3, split(apply H6, apply H8)), unfold(adj, 1, split(unfold(is_fm, 5, split(apply H7, apply H9)), unfold(is_list, 1, true))))).
Subgoal 2.2:

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

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 3, split(apply H6, apply H8)), unfold(adj, 1, split(apply H7, unfold(is_list, 1, true))))).
Subgoal 2.3:

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 3, split(apply H6, apply H8)), unfold(adj, 2, split(apply H7, unfold(adj, 1, split(apply H9, unfold(is_list, 1, true))))))).
Subgoal 2.4:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < unfold 2.
Subgoal 2.4:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < witness A1.
Subgoal 2.4:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < witness B1.
Subgoal 2.4:

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

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

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

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < search.
Witness: split(split(split(split(split(unfold(adj, 1, split(unfold(is_fm, 3, split(apply H6, apply H8)), unfold(is_list, 2, split(apply H7, unfold(is_list, 2, split(apply H9, unfold(is_list, 1, true))))))), unfold(merge, 2, exists[A = form AA, JJ = nil, LL = form BB :: nil] split(split(unfold(adj, 1, split(apply H7, unfold(is_list, 1, true))), unfold(adj, 1, split(apply H7, unfold(is_list, 2, split(apply H9, unfold(is_list, 1, true)))))), unfold(merge, 3, exists[A = form BB, KK = nil, LL = nil] split(split(unfold(adj, 1, split(apply H9, unfold(is_list, 1, true))), unfold(adj, 1, split(apply H9, unfold(is_list, 1, true)))), unfold(merge, 1, true)))))), unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, unfold(is_list, 1, true)))))), apply H4), unfold(adj, 1, split(apply H8, unfold(is_list, 2, split(apply H9, unfold(is_list, 1, true)))))), apply H5).
Subgoal 3:

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

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < search.
Witness: unfold(mall, 5, exists[LL = form one :: nil] split(unfold(adj, 2, split(unfold(is_fm, 4, true), unfold(adj, 1, split(unfold(is_fm, 6, true), unfold(is_list, 1, true))))), unfold(mall, 3, true))).
Subgoal 4:

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply IH to H2.
Subgoal 4:

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply IH to H3.
Subgoal 4:

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply dual_is to H2.
Subgoal 4:

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply dual_is to H3.
Subgoal 4:

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

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < search.
Witness: unfold(mall, 6, exists[A = AA, B = BB, LL = form (plus A1 B1) :: nil, J = form AA :: form (plus A1 B1) :: nil, K = form BB :: form (plus A1 B1) :: nil] split(split(split(split(unfold(adj, 2, split(unfold(is_fm, 9, split(apply H6, apply H8)), unfold(adj, 1, split(unfold(is_fm, 7, split(apply H7, apply H9)), unfold(is_list, 1, true))))), unfold(adj, 1, split(apply H7, unfold(is_list, 2, split(unfold(is_fm, 9, split(apply H6, apply H8)), unfold(is_list, 1, true)))))), unfold(mall, 8, exists[A = A1, B = B1, LL = form AA :: nil, J = form A1 :: form AA :: nil] split(split(unfold(adj, 2, split(apply H7, unfold(adj, 1, split(unfold(is_fm, 9, split(apply H6, apply H8)), unfold(is_list, 1, true))))), unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, unfold(is_list, 1, true)))))), apply H4))), unfold(adj, 1, split(apply H9, unfold(is_list, 2, split(unfold(is_fm, 9, split(apply H6, apply H8)), unfold(is_list, 1, true)))))), unfold(mall, 9, exists[A = A1, B = B1, LL = form BB :: nil, J = form B1 :: form BB :: nil] split(split(unfold(adj, 2, split(apply H9, unfold(adj, 1, split(unfold(is_fm, 9, split(apply H6, apply H8)), unfold(is_list, 1, true))))), unfold(adj, 1, split(apply H8, unfold(is_list, 2, split(apply H9, unfold(is_list, 1, true)))))), apply H5)))).
Subgoal 5:

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

Subgoal 6 is:
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < search.
Witness: unfold(mall, 7, exists[LL = form zero :: nil] unfold(adj, 2, split(unfold(is_fm, 10, true), unfold(adj, 1, split(unfold(is_fm, 8, true), unfold(is_list, 1, true)))))).
Subgoal 6:

Variables: B1 A1
IH : forall A B, {dual A B}* -> mall (form A :: form B :: nil)
H2 : {dual (A1 n1) (B1 n1)}*
============================
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply IH to H2.
Subgoal 6:

Variables: B1 A1
IH : forall A B, {dual A B}* -> mall (form A :: form B :: nil)
H2 : {dual (A1 n1) (B1 n1)}*
H3 : mall (form (A1 n1) :: form (B1 n1) :: nil)
============================
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < apply dual_is to H2.
Subgoal 6:

Variables: B1 A1
IH : forall A B, {dual A B}* -> mall (form A :: form B :: nil)
H2 : {dual (A1 n1) (B1 n1)}*
H3 : mall (form (A1 n1) :: form (B1 n1) :: nil)
H4 : is_fm (form (A1 n1))
H5 : is_fm (form (B1 n1))
============================
 mall (form (exs A1) :: form (all B1) :: nil)

generalized_id < search.
Witness: unfold(mall, 11, exists[A = B1, LL = form (exs A1) :: nil] split(unfold(adj, 2, split(unfold(is_fm, 12, intros[n1] apply H4), unfold(adj, 1, split(unfold(is_fm, 11, intros[n1] apply H5), unfold(is_list, 1, true))))), intros[n1] exists[J = form (B1 n1) :: form (exs A1) :: nil] split(unfold(adj, 1, split(apply H5, unfold(is_list, 2, split(unfold(is_fm, 12, intros[n1] apply H4), unfold(is_list, 1, true))))), unfold(mall, 10, exists[x = n1, A = A1, LL = form (B1 n1) :: nil, J = form (A1 n1) :: form (B1 n1) :: nil] split(split(unfold(adj, 2, split(apply H5, unfold(adj, 1, split(unfold(is_fm, 12, intros[n1] apply H4), unfold(is_list, 1, true))))), unfold(adj, 1, split(apply H4, unfold(is_list, 2, split(apply H5, unfold(is_list, 1, true)))))), apply H3))))).
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 (form (natom A) :: nil) (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (atom A) :: form (natom A) :: nil) L
H4 : is_fm (form (atom A))
H5 : is_list (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (atom A))
H5 : is_list (form (natom A) :: nil)
H6 : adj J (form (atom A)) L
H7 : perm (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (atom A))
H5 : is_list (form (natom A) :: nil)
H6 : adj J (form (atom A)) L
H8 : adj J1 (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (atom A))
H5 : is_list (form (natom A) :: nil)
H6 : adj J (form (atom A)) L
H8 : adj nil (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (atom A))
H5 : is_list (form (natom A) :: nil)
H6 : adj (form (natom A) :: nil) (form (atom A)) L
H10 : is_fm (form (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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(mall, 1, exists[A = A] apply H6).
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 (form (atom A))
H5 : is_list (form (natom A) :: nil)
H6 : adj J (form (atom A)) L
H8 : adj J1 (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (natom A) :: L1) L
H4 : is_fm (form (natom A))
H5 : adj nil (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (natom A))
H5 : adj nil (form (atom A)) L1
H6 : adj J (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (natom A))
H6 : adj J (form (natom A)) L
H7 : perm (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (natom A))
H6 : adj J (form (natom A)) L
H8 : adj J1 (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (natom A))
H9 : perm nil J1
H10 : adj J1 (form (natom A)) U
H11 : adj U (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (natom A))
H10 : adj nil (form (natom A)) U
H11 : adj U (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (natom A))
H11 : adj (form (natom A) :: nil) (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (natom A))
H11 : adj (form (natom A) :: nil) (form (atom A)) L
============================
 exists A, adj (form (natom A) :: nil) (form (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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: exists[A = A] apply H11.
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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < assert perm J (form 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
============================
 perm J (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H13 : perm JJ JJ
============================
 perm J (form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A1 = form A, KK = JJ, LL = JJ] split(split(apply H5, unfold(adj, 1, split(apply H9, apply H10))), apply 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H13 : perm J (form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < assert perm K1 (form 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H13 : perm J (form A :: JJ)
============================
 perm K1 (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H13 : perm J (form A :: JJ)
H14 : perm KK KK
============================
 perm K1 (form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A = form B, KK1 = KK, LL = KK] split(split(apply H7, unfold(adj, 1, split(apply H11, apply H12))), apply 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H6 : mall J *
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H13 : perm J (form A :: JJ)
H14 : perm K1 (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H7 : adj KK (form B) K1
H8 : mall K1 *
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H14 : perm K1 (form B :: KK)
H15 : mall (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H7 : adj KK (form B) K1
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H15 : mall (form A :: JJ)
H16 : mall (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H4 : merge JJ KK LL
H5 : adj JJ (form A) J
H7 : adj KK (form B) K1
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H15 : mall (form A :: JJ)
H16 : mall (form B :: KK)
H17 : adj KK1 (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H5 : adj JJ (form A) J
H7 : adj KK (form B) K1
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H15 : mall (form A :: JJ)
H16 : mall (form B :: KK)
H17 : adj KK1 (form (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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (tens A B)) K
H5 : adj JJ (form A) J
H7 : adj KK (form B) K1
H9 : is_fm (form A)
H10 : is_list JJ
H11 : is_fm (form B)
H12 : is_list KK
H15 : mall (form A :: JJ)
H16 : mall (form B :: KK)
H17 : adj KK1 (form (tens A B)) L
H19 : merge JJ KK KK1
============================
 exists A B LL JJ KK J K, adj LL (form (tens A B)) L /\ merge JJ KK LL /\
   adj JJ (form A) J /\ mall J /\ adj KK (form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: exists[A = A, B = B, LL = KK1, JJ = JJ, KK = KK, J = form A :: JJ, K = form B :: KK] split(split(split(split(split(apply H17, apply H19), unfold(adj, 1, split(apply H9, apply H10))), apply H15), unfold(adj, 1, split(apply H11, apply H12))), apply H16).
Subgoal 3:

Variables: L
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form one) L
H5 : perm nil LL
H6 : is_fm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form one) L
H6 : is_fm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form one)
H7 : is_list nil
============================
 mall (form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(mall, 3, true).
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 (form one :: K1) LL
H6 : is_fm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form (par A B)) K
H4 : adj LL (form A) J
H5 : adj J (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < assert perm J (form 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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
============================
 perm J (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : is_list KK
============================
 perm J (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : is_list KK
H10 : is_fm (form A)
============================
 perm J (form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A1 = form A, KK1 = LL, LL = KK] split(split(apply H4, unfold(adj, 1, split(apply H10, apply H9))), apply H8)).
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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < assert perm K1 (form B :: form 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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
============================
 perm K1 (form B :: form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
H10 : is_list KK
============================
 perm K1 (form B :: form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
H10 : is_list KK
H11 : is_fm (form A)
============================
 perm K1 (form B :: form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
H10 : is_list KK
H11 : is_fm (form A)
H12 : is_fm (form B)
============================
 perm K1 (form B :: form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A1 = form B, KK1 = J, LL = form A :: KK] split(split(apply H5, unfold(adj, 1, split(apply H12, unfold(is_list, 2, split(apply H11, apply H10))))), apply H9)).
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 (form A) J
H5 : adj J (form B) K1
H6 : mall K1 *
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
H10 : perm K1 (form B :: form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
H11 : mall (form B :: form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
H11 : mall (form B :: form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
H11 : mall (form B :: form A :: KK)
H12 : is_list KK
H13 : is_fm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
H11 : mall (form B :: form A :: KK)
H12 : is_list KK
H13 : is_fm (form A)
H14 : is_fm (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : adj J (form B) K1
H7 : adj KK (form (par A B)) L
H8 : perm LL KK
H9 : perm J (form A :: KK)
H11 : mall (form B :: form A :: KK)
H12 : is_list KK
H13 : is_fm (form A)
H14 : is_fm (form B)
============================
 exists A B LL J K, adj LL (form (par A B)) L /\ adj LL (form A) J /\
   adj J (form 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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: exists[A = A, B = B, LL = KK, J = form A :: KK, K = form B :: form A :: KK] split(split(split(apply H7, unfold(adj, 1, split(apply H13, apply H12))), unfold(adj, 1, split(apply H14, unfold(is_list, 2, split(apply H13, apply H12))))), apply H11).
Subgoal 5:

Variables: K L LL
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form 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

Subgoal 10 is:
 mall L

Subgoal 11 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 (form bot) L
H7 : mall KK
============================
 exists LL, adj LL (form bot) L /\ mall LL

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: exists[LL = KK] split(apply H5, apply H7).
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 (form (wth A B)) K
H4 : adj LL (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < assert perm J (form 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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
============================
 perm J (form A :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H10 : is_list KK
============================
 perm J (form A :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H10 : is_list KK
H11 : is_fm (form A)
============================
 perm J (form A :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H10 : is_list KK
H11 : is_fm (form A)
H12 : perm KK KK
============================
 perm J (form A :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A1 = form A, KK1 = LL, LL = KK] split(split(apply H4, unfold(adj, 1, split(apply H11, apply H10))), apply H9)).
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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H10 : perm J (form A :: KK)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < assert perm K1 (form 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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H10 : perm J (form A :: KK)
============================
 perm K1 (form B :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H10 : perm J (form A :: KK)
H11 : is_list KK
============================
 perm K1 (form B :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H10 : perm J (form A :: KK)
H11 : is_list KK
H12 : is_fm (form B)
============================
 perm K1 (form B :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H10 : perm J (form A :: KK)
H11 : is_list KK
H12 : is_fm (form B)
H13 : perm KK KK
============================
 perm K1 (form B :: KK)

Subgoal 6 is:
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A = form B, KK1 = LL, LL = KK] split(split(apply H6, unfold(adj, 1, split(apply H12, apply H11))), apply H9)).
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 (form A) J
H5 : mall J *
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H10 : perm J (form A :: KK)
H11 : perm K1 (form B :: KK)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj LL (form B) K1
H7 : mall K1 *
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H11 : perm K1 (form B :: KK)
H12 : mall (form A :: KK)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj LL (form B) K1
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H12 : mall (form A :: KK)
H13 : mall (form B :: KK)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj LL (form B) K1
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H12 : mall (form A :: KK)
H13 : mall (form B :: KK)
H14 : is_list KK
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj LL (form B) K1
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H12 : mall (form A :: KK)
H13 : mall (form B :: KK)
H14 : is_list KK
H15 : is_fm (form (wth A B))
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj LL (form B) K1
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H12 : mall (form A :: KK)
H13 : mall (form B :: KK)
H14 : is_list KK
H16 : is_fm (form A)
H17 : is_fm (form B)
============================
 mall L

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj LL (form B) K1
H8 : adj KK (form (wth A B)) L
H9 : perm LL KK
H12 : mall (form A :: KK)
H13 : mall (form B :: KK)
H14 : is_list KK
H16 : is_fm (form A)
H17 : is_fm (form B)
============================
 exists A B LL J K, adj LL (form (wth A B)) L /\ adj LL (form A) J /\
   mall J /\ adj LL (form B) K /\ mall K

Subgoal 7 is:
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: exists[A = A, B = B, LL = KK, J = form A :: KK, K = form B :: KK] split(split(split(split(apply H8, unfold(adj, 1, split(apply H16, apply H14))), apply H12), unfold(adj, 1, split(apply H17, apply H14))), apply H13).
Subgoal 7:

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

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form top) L
H5 : perm LL KK
============================
 mall L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form top) L
H5 : perm LL KK
============================
 exists LL, adj LL (form top) L

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: exists[LL = KK] apply H4.
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 (form (plus A B)) K
H4 : adj LL (form A) J
H5 : mall J *
============================
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
============================
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < assert perm J (form 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 (form A) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
============================
 perm J (form A :: KK)

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : is_list KK
============================
 perm J (form A :: KK)

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : is_list KK
H9 : is_fm (form A)
============================
 perm J (form A :: KK)

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : is_list KK
H9 : is_fm (form A)
H10 : perm KK KK
============================
 perm J (form A :: KK)

Subgoal 8 is:
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A1 = form A, KK1 = LL, LL = KK] split(split(apply H4, unfold(adj, 1, split(apply H9, apply H8))), apply H7)).
Subgoal 8:

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

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H9 : mall (form A :: KK)
============================
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H9 : mall (form A :: KK)
H10 : is_list KK
============================
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H9 : mall (form A :: KK)
H10 : is_list KK
H11 : is_fm (form A)
============================
 mall L

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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 (form A) J
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H9 : mall (form A :: KK)
H10 : is_list KK
H11 : is_fm (form A)
============================
 exists A B LL J, adj LL (form (plus A B)) L /\ adj LL (form A) J /\ mall J

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: exists[A = A, B = B, LL = KK, J = form A :: KK] split(split(apply H6, unfold(adj, 1, split(apply H11, apply H10))), apply H9).
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 (form (plus A B)) K
H4 : adj LL (form B) J
H5 : mall J *
============================
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 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
H2 : perm K L
H3 : adj LL (form (plus A B)) K
H4 : adj LL (form B) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
============================
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

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

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

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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
H2 : perm K L
H3 : adj LL (form (plus A B)) K
H4 : adj LL (form B) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : is_list KK
============================
 perm J (form B :: KK)

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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
H2 : perm K L
H3 : adj LL (form (plus A B)) K
H4 : adj LL (form B) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : is_list KK
H9 : is_fm (form B)
============================
 perm J (form B :: KK)

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 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
H2 : perm K L
H3 : adj LL (form (plus A B)) K
H4 : adj LL (form B) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : is_list KK
H9 : is_fm (form B)
H10 : perm KK KK
============================
 perm J (form B :: KK)

Subgoal 9 is:
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A = form B, KK1 = LL, LL = KK] split(split(apply H4, unfold(adj, 1, split(apply H9, apply H8))), apply H7)).
Subgoal 9:

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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 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
H2 : perm K L
H3 : adj LL (form (plus A B)) K
H4 : adj LL (form B) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : perm J (form B :: KK)
H9 : mall (form B :: KK)
============================
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 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
H2 : perm K L
H3 : adj LL (form (plus A B)) K
H4 : adj LL (form B) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : perm J (form B :: KK)
H9 : mall (form B :: KK)
H10 : is_list KK
============================
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 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
H2 : perm K L
H3 : adj LL (form (plus A B)) K
H4 : adj LL (form B) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : perm J (form B :: KK)
H9 : mall (form B :: KK)
H10 : is_list KK
H11 : is_fm (form B)
============================
 mall L

Subgoal 10 is:
 mall L

Subgoal 11 is:
 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
H2 : perm K L
H3 : adj LL (form (plus A B)) K
H4 : adj LL (form B) J
H5 : mall J *
H6 : adj KK (form (plus A B)) L
H7 : perm LL KK
H8 : perm J (form B :: KK)
H9 : mall (form B :: KK)
H10 : is_list KK
H11 : is_fm (form B)
============================
 exists A B LL J, adj LL (form (plus A B)) L /\ adj LL (form B) J /\ mall J

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: exists[A = A, B = B, LL = KK, J = form B :: KK] split(split(apply H6, unfold(adj, 1, split(apply H11, apply H10))), apply H9).
Subgoal 10:

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

Subgoal 11 is:
 mall L

mall_perm < apply adj_perm_full to H2 H3.
Subgoal 10:

Variables: K L x A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (exs A)) K
H4 : adj LL (form (A x)) J
H5 : mall J *
H6 : adj KK (form (exs A)) L
H7 : perm LL KK
============================
 mall L

Subgoal 11 is:
 mall L

mall_perm < assert perm J (form (A x) :: KK).
Subgoal 10.1:

Variables: K L x A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (exs A)) K
H4 : adj LL (form (A x)) J
H5 : mall J *
H6 : adj KK (form (exs A)) L
H7 : perm LL KK
============================
 perm J (form (A x) :: KK)

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < apply adj_1_is_list to H6.
Subgoal 10.1:

Variables: K L x A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (exs A)) K
H4 : adj LL (form (A x)) J
H5 : mall J *
H6 : adj KK (form (exs A)) L
H7 : perm LL KK
H8 : is_list KK
============================
 perm J (form (A x) :: KK)

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 10.1:

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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < apply perm_refl to H8.
Subgoal 10.1:

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

Subgoal 10 is:
 mall L

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A1 = form (A x), KK1 = LL, LL = KK] split(split(apply H4, unfold(adj, 1, split(apply H9, apply H8))), apply H7)).
Subgoal 10:

Variables: K L x A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (exs A)) K
H4 : adj LL (form (A x)) J
H5 : mall J *
H6 : adj KK (form (exs A)) L
H7 : perm LL KK
H8 : perm J (form (A x) :: KK)
============================
 mall L

Subgoal 11 is:
 mall L

mall_perm < apply IH to H5 H8.
Subgoal 10:

Variables: K L x A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (exs A)) K
H4 : adj LL (form (A x)) J
H5 : mall J *
H6 : adj KK (form (exs A)) L
H7 : perm LL KK
H8 : perm J (form (A x) :: KK)
H9 : mall (form (A x) :: KK)
============================
 mall L

Subgoal 11 is:
 mall L

mall_perm < apply adj_1_is_list to H6.
Subgoal 10:

Variables: K L x A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (exs A)) K
H4 : adj LL (form (A x)) J
H5 : mall J *
H6 : adj KK (form (exs A)) L
H7 : perm LL KK
H8 : perm J (form (A x) :: KK)
H9 : mall (form (A x) :: KK)
H10 : is_list KK
============================
 mall L

Subgoal 11 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 10:

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

Subgoal 11 is:
 mall L

mall_perm < unfold 10.
Subgoal 10:

Variables: K L x A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (exs A)) K
H4 : adj LL (form (A x)) J
H5 : mall J *
H6 : adj KK (form (exs A)) L
H7 : perm LL KK
H8 : perm J (form (A x) :: KK)
H9 : mall (form (A x) :: KK)
H10 : is_list KK
H11 : is_fm (form (A x))
============================
 exists x A LL J, adj LL (form (exs A)) L /\ adj LL (form (A x)) J /\ mall J

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: exists[x = x, A = A, LL = KK, J = form (A x) :: KK] split(split(apply H6, unfold(adj, 1, split(apply H11, apply H10))), apply H9).
Subgoal 11:

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

mall_perm < apply adj_perm_full to H2 H3.
Subgoal 11:

Variables: K L A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (all A)) K
H4 : adj LL (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj KK (form (all A)) L
H7 : perm LL KK
============================
 mall L

mall_perm < assert perm (J n1) (form (A n1) :: KK).
Subgoal 11.1:

Variables: K L A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (all A)) K
H4 : adj LL (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj KK (form (all A)) L
H7 : perm LL KK
============================
 perm (J n1) (form (A n1) :: KK)

Subgoal 11 is:
 mall L

mall_perm < apply adj_1_is_list to H6.
Subgoal 11.1:

Variables: K L A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (all A)) K
H4 : adj LL (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj KK (form (all A)) L
H7 : perm LL KK
H8 : is_list KK
============================
 perm (J n1) (form (A n1) :: KK)

Subgoal 11 is:
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 11.1:

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

Subgoal 11 is:
 mall L

mall_perm < apply perm_refl to H8.
Subgoal 11.1:

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

Subgoal 11 is:
 mall L

mall_perm < search.
Witness: unfold(perm, 2, exists[A1 = form (A n1), KK1 = LL, LL = KK] split(split(apply H4, unfold(adj, 1, split(apply H9, apply H8))), apply H7)).
Subgoal 11:

Variables: K L A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (all A)) K
H4 : adj LL (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj KK (form (all A)) L
H7 : perm LL KK
H8 : perm (J n1) (form (A n1) :: KK)
============================
 mall L

mall_perm < apply IH to H5 H8.
Subgoal 11:

Variables: K L A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (all A)) K
H4 : adj LL (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj KK (form (all A)) L
H7 : perm LL KK
H8 : perm (J n1) (form (A n1) :: KK)
H9 : mall (form (A n1) :: KK)
============================
 mall L

mall_perm < apply adj_1_is_list to H6.
Subgoal 11:

Variables: K L A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (all A)) K
H4 : adj LL (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj KK (form (all A)) L
H7 : perm LL KK
H8 : perm (J n1) (form (A n1) :: KK)
H9 : mall (form (A n1) :: KK)
H10 : is_list KK
============================
 mall L

mall_perm < apply adj_2_is_o to H4.
Subgoal 11:

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

mall_perm < unfold 11.
Subgoal 11:

Variables: K L A LL J KK
IH : forall K L, mall K * -> perm K L -> mall L
H2 : perm K L
H3 : adj LL (form (all A)) K
H4 : adj LL (form (A n1)) (J n1)
H5 : mall (J n1) *
H6 : adj KK (form (all A)) L
H7 : perm LL KK
H8 : perm (J n1) (form (A n1) :: KK)
H9 : mall (form (A n1) :: KK)
H10 : is_list KK
H11 : is_fm (form (A n1))
============================
 exists A LL, adj LL (form (all A)) L /\
   (nabla x, exists J, adj LL (form (A x)) J /\ mall J)

mall_perm < search.
Witness: exists[A = A, LL = KK] split(apply H6, intros[n1] exists[J = form (A n1) :: KK] split(unfold(adj, 1, split(apply H11, apply H10)), apply H9)).
Proof completed.
Abella < Theorem bot_inv : 
forall J L, mall L -> adj J (form bot) L -> mall J.


============================
 forall J L, mall L -> adj J (form bot) L -> mall J

bot_inv < induction on 1.

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

bot_inv < intros.

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

bot_inv < case H1.
Subgoal 1:

Variables: J L A
IH : forall J L, mall L * -> adj J (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj (form (natom A) :: nil) (form (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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj (form (natom A) :: nil) (form (atom A)) L
H4 : form bot = form (atom A) /\ perm J (form (natom A) :: nil) \/
       (exists KK, adj KK (form bot) (form (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

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < case H4.
Subgoal 1:

Variables: J L A KK
IH : forall J L, mall L * -> adj J (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj (form (natom A) :: nil) (form (atom A)) L
H5 : adj KK (form bot) (form (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

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < case H5.
Subgoal 1:

Variables: J L A K
IH : forall J L, mall L * -> adj J (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj (form (natom A) :: nil) (form (atom A)) L
H6 : is_fm (form (natom A))
H7 : adj K (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H9 : form bot = form (tens A B) /\ perm J LL \/
       (exists KK, adj KK (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H11 : (exists JJ1, adj JJ1 (form bot) JJ /\ merge JJ1 KK KK1) \/
        (exists KK2, adj KK2 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj JJ1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj JJ1 (form bot) JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 (form A) U
H15 : adj U (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj JJ1 (form bot) JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 (form A) U
H15 : adj U (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj JJ1 (form bot) JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 (form A) U
H15 : adj U (form bot) J1
H16 : mall U
H17 : adj LL1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj JJ1 (form bot) JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 (form A) U
H15 : adj U (form bot) J1
H16 : mall U
H17 : adj LL1 (form bot) LL
H18 : merge JJ1 KK LL1
H19 : adj LL1 (form (tens A B)) U1
H20 : adj U1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj JJ1 (form bot) JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 (form A) U
H15 : adj U (form bot) J1
H16 : mall U
H17 : adj LL1 (form bot) LL
H18 : merge JJ1 KK LL1
H19 : adj LL1 (form (tens A B)) U1
H20 : adj U1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj JJ1 (form bot) JJ
H13 : merge JJ1 KK KK1
H14 : adj JJ1 (form A) U
H15 : adj U (form bot) J1
H16 : mall U
H17 : adj LL1 (form bot) LL
H18 : merge JJ1 KK LL1
H19 : adj LL1 (form (tens A B)) U1
H20 : adj U1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < backchain mall_perm with K = U1.
Witness: apply H21.
Witness: apply H22.
Subgoal 2.2:

Variables: J L A B LL JJ KK J1 K KK1 KK2
IH : forall J L, mall L * -> adj J (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H4 : merge JJ KK LL
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj KK2 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj KK2 (form bot) KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj KK2 (form bot) KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj KK2 (form bot) KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form bot) LL
H12 : adj KK2 (form bot) KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 (form bot) LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 (form B) U
H19 : adj U (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H10 : adj KK1 (form bot) LL
H12 : adj KK2 (form bot) KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 (form bot) LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 (form B) U
H19 : adj U (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H10 : adj KK1 (form bot) LL
H12 : adj KK2 (form bot) KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 (form bot) LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 (form B) U
H19 : adj U (form bot) K
H20 : mall U
H21 : adj KK1 (form (tens A B)) U1
H22 : adj U1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H10 : adj KK1 (form bot) LL
H12 : adj KK2 (form bot) KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 (form bot) LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 (form B) U
H19 : adj U (form bot) K
H20 : mall U
H21 : adj KK1 (form (tens A B)) U1
H22 : adj U1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (tens A B)) L
H5 : adj JJ (form A) J1
H6 : mall J1 *
H7 : adj KK (form B) K
H10 : adj KK1 (form bot) LL
H12 : adj KK2 (form bot) KK
H13 : merge JJ KK2 KK1
H14 : adj LL1 (form bot) LL
H17 : merge JJ KK2 KK1
H18 : adj KK2 (form B) U
H19 : adj U (form bot) K
H20 : mall U
H21 : adj KK1 (form (tens A B)) U1
H22 : adj U1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < backchain mall_perm with K = U1.
Witness: apply H23.
Witness: apply H24.
Subgoal 3:

Variables: J
IH : forall J L, mall L * -> adj J (form bot) L -> mall J
H2 : adj J (form bot) (form 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

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < case H2.
Subgoal 3:

Variables: K
IH : forall J L, mall L * -> adj J (form bot) L -> mall J
H3 : is_fm (form one)
H4 : adj K (form bot) nil
============================
 mall (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (par A B)) L
H4 : adj LL (form A) J1
H5 : adj J1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (par A B)) L
H4 : adj LL (form A) J1
H5 : adj J1 (form B) K
H6 : mall K *
H7 : form bot = form (par A B) /\ perm J LL \/
       (exists KK, adj KK (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (par A B)) L
H4 : adj LL (form A) J1
H5 : adj J1 (form B) K
H6 : mall K *
H8 : adj KK (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (par A B)) L
H4 : adj LL (form A) J1
H5 : adj J1 (form B) K
H6 : mall K *
H8 : adj KK (form bot) LL
H9 : adj KK (form A) U
H10 : adj U (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (par A B)) L
H4 : adj LL (form A) J1
H5 : adj J1 (form B) K
H6 : mall K *
H8 : adj KK (form bot) LL
H9 : adj KK (form A) U
H10 : adj U (form bot) J1
H11 : adj U (form B) U1
H12 : adj U1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (par A B)) L
H4 : adj LL (form A) J1
H5 : adj J1 (form B) K
H8 : adj KK (form bot) LL
H9 : adj KK (form A) U
H10 : adj U (form bot) J1
H11 : adj U (form B) U1
H12 : adj U1 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (par A B)) L
H4 : adj LL (form A) J1
H5 : adj J1 (form B) K
H8 : adj KK (form bot) LL
H9 : adj KK (form A) U
H10 : adj U (form bot) J1
H11 : adj U (form B) U1
H12 : adj U1 (form bot) K
H13 : mall U1
H14 : adj KK (form (par A B)) U2
H15 : adj U2 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (par A B)) L
H4 : adj LL (form A) J1
H5 : adj J1 (form B) K
H8 : adj KK (form bot) LL
H9 : adj KK (form A) U
H10 : adj U (form bot) J1
H11 : adj U (form B) U1
H12 : adj U1 (form bot) K
H13 : mall U1
H14 : adj KK (form (par A B)) U2
H15 : adj U2 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (par A B)) L
H4 : adj LL (form A) J1
H5 : adj J1 (form B) K
H8 : adj KK (form bot) LL
H9 : adj KK (form A) U
H10 : adj U (form bot) J1
H11 : adj U (form B) U1
H12 : adj U1 (form bot) K
H13 : mall U1
H14 : adj KK (form (par A B)) U2
H15 : adj U2 (form 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

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < backchain mall_perm with K = U2.
Witness: apply H16.
Witness: apply H17.
Subgoal 5:

Variables: J L LL
IH : forall J L, mall L * -> adj J (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form 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

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form 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

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < backchain mall_perm.
Witness: apply H4.
Witness: apply H5.
Subgoal 6:

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

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (wth A B)) L
H4 : adj LL (form A) J1
H5 : mall J1 *
H6 : adj LL (form B) K
H7 : mall K *
H8 : form bot = form (wth A B) /\ perm J LL \/
       (exists KK, adj KK (form bot) LL)
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (wth A B)) L
H4 : adj LL (form A) J1
H5 : mall J1 *
H6 : adj LL (form B) K
H7 : mall K *
H9 : adj KK (form bot) LL
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (wth A B)) L
H4 : adj LL (form A) J1
H5 : mall J1 *
H6 : adj LL (form B) K
H7 : mall K *
H9 : adj KK (form bot) LL
H10 : adj KK (form A) U
H11 : adj U (form bot) J1
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (wth A B)) L
H4 : adj LL (form A) J1
H6 : adj LL (form B) K
H7 : mall K *
H9 : adj KK (form bot) LL
H10 : adj KK (form A) U
H11 : adj U (form bot) J1
H12 : mall U
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (wth A B)) L
H4 : adj LL (form A) J1
H6 : adj LL (form B) K
H7 : mall K *
H9 : adj KK (form bot) LL
H10 : adj KK (form A) U
H11 : adj U (form bot) J1
H12 : mall U
H13 : adj KK (form B) U1
H14 : adj U1 (form bot) K
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (wth A B)) L
H4 : adj LL (form A) J1
H6 : adj LL (form B) K
H9 : adj KK (form bot) LL
H10 : adj KK (form A) U
H11 : adj U (form bot) J1
H12 : mall U
H13 : adj KK (form B) U1
H14 : adj U1 (form bot) K
H15 : mall U1
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (wth A B)) L
H4 : adj LL (form A) J1
H6 : adj LL (form B) K
H9 : adj KK (form bot) LL
H10 : adj KK (form A) U
H11 : adj U (form bot) J1
H12 : mall U
H13 : adj KK (form B) U1
H14 : adj U1 (form bot) K
H15 : mall U1
H16 : adj KK (form (wth A B)) U2
H17 : adj U2 (form bot) L
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (wth A B)) L
H4 : adj LL (form A) J1
H6 : adj LL (form B) K
H9 : adj KK (form bot) LL
H10 : adj KK (form A) U
H11 : adj U (form bot) J1
H12 : mall U
H13 : adj KK (form B) U1
H14 : adj U1 (form bot) K
H15 : mall U1
H16 : adj KK (form (wth A B)) U2
H17 : adj U2 (form bot) L
H18 : perm U2 J
============================
 mall J

Subgoal 7 is:
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < backchain mall_perm with K = U2.
Witness: unfold(mall, 6, exists[A = A, B = B, LL = KK, J = U, K = U1] split(split(split(split(apply H16, apply H10), apply H12), apply H13), apply H15)).
Witness: apply H18.
Subgoal 7:

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

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form top) L
H4 : form bot = form top /\ perm J LL \/ (exists KK, adj KK (form bot) LL)
============================
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < case H4.
Subgoal 7:

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

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form top) L
H5 : adj KK (form bot) LL
H6 : adj KK (form top) U
H7 : adj U (form bot) L
============================
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form top) L
H5 : adj KK (form bot) LL
H6 : adj KK (form top) U
H7 : adj U (form bot) L
H8 : perm U J
============================
 mall J

Subgoal 8 is:
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < backchain mall_perm with K = U.
Witness: unfold(mall, 7, exists[LL = KK] apply H6).
Witness: apply H8.
Subgoal 8:

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

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (plus A B)) L
H4 : adj LL (form A) J1
H5 : mall J1 *
H6 : form bot = form (plus A B) /\ perm J LL \/
       (exists KK, adj KK (form bot) LL)
============================
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (plus A B)) L
H4 : adj LL (form A) J1
H5 : mall J1 *
H7 : adj KK (form bot) LL
============================
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (plus A B)) L
H4 : adj LL (form A) J1
H5 : mall J1 *
H7 : adj KK (form bot) LL
H8 : adj KK (form A) U
H9 : adj U (form bot) J1
============================
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (plus A B)) L
H4 : adj LL (form A) J1
H7 : adj KK (form bot) LL
H8 : adj KK (form A) U
H9 : adj U (form bot) J1
H10 : mall U
============================
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H4 : adj LL (form A) J1
H8 : adj KK (form A) U
H9 : adj U (form bot) J1
H10 : mall U
H11 : adj KK (form (plus A B)) U1
H12 : adj U1 (form bot) L
============================
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 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 (form bot) L -> mall J
H4 : adj LL (form A) J1
H8 : adj KK (form A) U
H9 : adj U (form bot) J1
H10 : mall U
H11 : adj KK (form (plus A B)) U1
H13 : perm U1 J
============================
 mall J

Subgoal 9 is:
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < backchain mall_perm with K = U1.
Witness: unfold(mall, 8, exists[A = A, B = B, LL = KK, J = U] split(split(apply H11, apply H8), apply H10)).
Witness: apply H13.
Subgoal 9:

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

Subgoal 10 is:
 mall J

Subgoal 11 is:
 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (plus A B)) L
H4 : adj LL (form B) J1
H5 : mall J1 *
H6 : form bot = form (plus A B) /\ perm J LL \/
       (exists KK, adj KK (form bot) LL)
============================
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < case H6.
Subgoal 9:

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

Subgoal 10 is:
 mall J

Subgoal 11 is:
 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (plus A B)) L
H4 : adj LL (form B) J1
H5 : mall J1 *
H7 : adj KK (form bot) LL
H8 : adj KK (form B) U
H9 : adj U (form bot) J1
============================
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 is:
 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (plus A B)) L
H4 : adj LL (form B) J1
H7 : adj KK (form bot) LL
H8 : adj KK (form B) U
H9 : adj U (form bot) J1
H10 : mall U
============================
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 is:
 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 (form bot) L -> mall J
H2 : adj J (form bot) L
H4 : adj LL (form B) J1
H8 : adj KK (form B) U
H9 : adj U (form bot) J1
H10 : mall U
H11 : adj KK (form (plus A B)) U1
H12 : adj U1 (form bot) L
============================
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 is:
 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 (form bot) L -> mall J
H4 : adj LL (form B) J1
H8 : adj KK (form B) U
H9 : adj U (form bot) J1
H10 : mall U
H11 : adj KK (form (plus A B)) U1
H13 : perm U1 J
============================
 mall J

Subgoal 10 is:
 mall J

Subgoal 11 is:
 mall J

bot_inv < backchain mall_perm with K = U1.
Witness: unfold(mall, 9, exists[A = A, B = B, LL = KK, J = U] split(split(apply H11, apply H8), apply H10)).
Witness: apply H13.
Subgoal 10:

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

Subgoal 11 is:
 mall J

bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 10:

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

Subgoal 11 is:
 mall J

bot_inv < case H6.
Subgoal 10:

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

Subgoal 11 is:
 mall J

bot_inv < apply adj_swap to H7 H4.
Subgoal 10:

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

Subgoal 11 is:
 mall J

bot_inv < apply IH to H5 H9.
Subgoal 10:

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

Subgoal 11 is:
 mall J

bot_inv < apply adj_swap to H7 H3.
Subgoal 10:

Variables: J L x A LL J1 KK U U1
IH : forall J L, mall L * -> adj J (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (exs A)) L
H4 : adj LL (form (A x)) J1
H5 : mall J1 *
H7 : adj KK (form bot) LL
H8 : adj KK (form (A x)) U
H9 : adj U (form bot) J1
H10 : mall U
H11 : adj KK (form (exs A)) U1
H12 : adj U1 (form bot) L
============================
 mall J

Subgoal 11 is:
 mall J

bot_inv < apply adj_same_result to H12 H2.
Subgoal 10:

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

Subgoal 11 is:
 mall J

bot_inv < backchain mall_perm with K = U1.
Witness: unfold(mall, 10, exists[x = x, A = A, LL = KK, J = U] split(split(apply H11, apply H8), apply H10)).
Witness: apply H13.
Subgoal 11:

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

bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 11:

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

bot_inv < case H6.
Subgoal 11:

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

bot_inv < apply adj_swap to H7 H4.
Subgoal 11:

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

bot_inv < apply IH to H5 H9.
Subgoal 11:

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

bot_inv < apply adj_swap to H7 H3.
Subgoal 11:

Variables: J L A LL J1 KK U U1
IH : forall J L, mall L * -> adj J (form bot) L -> mall J
H2 : adj J (form bot) L
H3 : adj LL (form (all A)) L
H4 : adj LL (form (A n1)) (J1 n1)
H5 : mall (J1 n1) *
H7 : adj KK (form bot) LL
H8 : adj KK (form (A n1)) (U n1)
H9 : adj (U n1) (form bot) (J1 n1)
H10 : mall (U n1)
H11 : adj KK (form (all A)) U1
H12 : adj U1 (form bot) L
============================
 mall J

bot_inv < apply adj_same_result to H12 H2.
Subgoal 11:

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

bot_inv < backchain mall_perm with K = U1.
Witness: unfold(mall, 11, exists[A = A, LL = KK] split(apply H11, intros[n1] exists[J = U n1] split(apply H8, apply H10))).
Witness: apply H13.
Proof completed.
Abella < Theorem par_inv : 
forall L JJ A B, mall L -> adj JJ (form (par A B)) L ->
  (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL).


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

par_inv < induction on 1.

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

par_inv < intros.

Variables: L JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H1 : mall L @
H2 : adj JJ (form (par A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
H4 : form (par A B) = form (atom A1) /\ perm JJ (form (natom A1) :: nil) \/
       (exists KK, adj KK (form (par A B)) (form (natom A1) :: nil))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
H5 : adj KK (form (par A B)) (form (natom A1) :: nil)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
H6 : is_fm (form (natom A1))
H7 : adj K (form (par A B)) nil
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B1) K
H8 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B1) K
H8 : mall K *
H9 : form (par A B) = form (tens A1 B1) /\ perm JJ LL \/
       (exists KK, adj KK (form (par A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H11 : (exists JJ, adj JJ (form (par A B)) JJ1 /\ merge JJ KK KK1) \/
        (exists KK2, adj KK2 (form (par A B)) KK /\ merge JJ1 KK2 KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H6 : mall J *
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (par A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H16 : adj U (form A) KK2
H17 : adj KK2 (form B) LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H17 : adj KK2 (form B) LL1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H20 : adj U1 (form A1) KK2
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert merge U2 KK (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert mall (form (tens A1 B1) :: form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H7 : adj KK (form B1) K
H8 : mall K *
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H7 : adj KK (form B1) K
H8 : mall K *
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H7 : adj KK (form B1) K
H8 : mall K *
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK3 (form (tens A1 B1)) JJ
H33 : perm KK1 KK3
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H7 : adj KK (form B1) K
H8 : mall K *
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK3 (form (tens A1 B1)) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form (tens A1 B1) :: form A :: form B :: KK1) (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H7 : adj KK (form B1) K
H8 : mall K *
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK3 (form (tens A1 B1)) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
H35 : perm (form (tens A1 B1) :: form A :: form B :: KK1)
        (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H7 : adj KK (form B1) K
H8 : mall K *
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK3 (form (tens A1 B1)) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
H36 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert adj JJ (form A) (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H7 : adj KK (form B1) K
H8 : mall K *
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK3 (form (tens A1 B1)) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
H36 : mall (form A :: form B :: JJ)
H37 : adj JJ (form A) (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert adj (form A :: JJ) (form B) (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H7 : adj KK (form B1) K
H8 : mall K *
H12 : adj JJ2 (form (par A B)) JJ1
H13 : merge JJ2 KK KK1
H18 : mall LL1
H19 : adj JJ2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form A1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge U2 KK (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK3 (form (tens A1 B1)) JJ
H33 : perm KK1 KK3
H34 : is_list JJ
H36 : mall (form A :: form B :: JJ)
H37 : adj JJ (form A) (form A :: JJ)
H38 : adj (form A :: JJ) (form B) (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form A :: form B :: JJ] split(split(apply H37, apply H38), apply H36).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B1) K
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H12 : adj KK2 (form (par A B)) KK
H13 : merge JJ1 KK2 KK1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H8 : mall K *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B1) U
H15 : adj U (form (par A B)) K
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B1) U
H16 : adj U (form A) KK3
H17 : adj KK3 (form B) LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H17 : adj KK3 (form B) LL1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H20 : adj U1 (form B1) KK3
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert merge JJ1 U2 (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert mall (form (tens A1 B1) :: form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (tens A1 B1)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H10 : adj KK1 (form (par A B)) LL
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H5 : adj JJ1 (form A1) J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK4 (form (tens A1 B1)) JJ
H33 : perm KK1 KK4
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H5 : adj JJ1 (form A1) J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK4 (form (tens A1 B1)) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form (tens A1 B1) :: form A :: form B :: KK1) (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H5 : adj JJ1 (form A1) J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H28 : mall (form (tens A1 B1) :: form A :: form B :: KK1)
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK4 (form (tens A1 B1)) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
H35 : perm (form (tens A1 B1) :: form A :: form B :: KK1)
        (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H5 : adj JJ1 (form A1) J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK4 (form (tens A1 B1)) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
H36 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert adj JJ (form A) (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H5 : adj JJ1 (form A1) J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK4 (form (tens A1 B1)) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
H36 : mall (form A :: form B :: JJ)
H37 : adj JJ (form A) (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert adj (form A :: JJ) (form B) (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H5 : adj JJ1 (form A1) J
H6 : mall J *
H13 : merge JJ1 KK2 KK1
H18 : mall LL1
H19 : adj KK2 (form A) U1
H21 : adj U1 (form B) U2
H22 : adj U2 (form B1) LL1
H23 : is_list KK1
H24 : is_fm (form A)
H25 : is_fm (form B)
H26 : merge JJ1 U2 (form A :: form B :: KK1)
H27 : is_fm (form (tens A1 B1))
H29 : adj KK1 (form (tens A1 B1)) U3
H30 : adj U3 (form (par A B)) L
H31 : perm U3 JJ
H32 : adj KK4 (form (tens A1 B1)) JJ
H33 : perm KK1 KK4
H34 : is_list JJ
H36 : mall (form A :: form B :: JJ)
H37 : adj JJ (form A) (form A :: JJ)
H38 : adj (form A :: JJ) (form B) (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form A :: form B :: JJ] split(split(apply H37, apply H38), apply H36).
Subgoal 3:

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < case H2.
Subgoal 3:

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

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

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
H7 : form (par A B) = form (par A1 B1) /\ perm JJ LL \/
       (exists KK, adj KK (form (par A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
H7 : form (par A B) = form (par A1 B1) /\ perm JJ LL \/
       (exists KK, adj KK (form (par A B)) LL)
H8 : is_fm (form A1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
H7 : form (par A B) = form (par A1 B1) /\ perm JJ LL \/
       (exists KK, adj KK (form (par A B)) LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
H7 : form (par A B) = form (par A1 B1) /\ perm JJ LL \/
       (exists KK, adj KK (form (par A B)) LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A1 B1)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : perm JJ LL
============================
 exists KK LL, adj JJ (form A1) KK /\ adj KK (form B1) LL /\ mall LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form A1 :: form B1 :: JJ) K.
Subgoal 4.1:

Variables: L JJ A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A1 B1)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : perm JJ LL
H12 : perm (form A1 :: form B1 :: JJ) K
============================
 exists KK LL, adj JJ (form A1) KK /\ adj KK (form B1) LL /\ mall LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A1 B1)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : perm JJ LL
H13 : perm K (form A1 :: form B1 :: JJ)
============================
 exists KK LL, adj JJ (form A1) KK /\ adj KK (form B1) LL /\ mall LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A1 B1)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : perm JJ LL
H14 : mall (form A1 :: form B1 :: JJ)
============================
 exists KK LL, adj JJ (form A1) KK /\ adj KK (form B1) LL /\ mall LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A1 :: JJ, LL = form A1 :: form B1 :: JJ] split(split(unfold(adj, 1, split(apply H8, apply H10)), unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H9, apply H10))))), apply H14).
Subgoal 4.2:

Variables: L JJ A B A1 B1 LL J K KK
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H5 : adj J (form B1) K
H6 : mall K *
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H12 : adj KK (form A1) U
H13 : adj U (form (par A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H6 : mall K *
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H12 : adj KK (form A1) U
H14 : adj U (form B1) U1
H15 : adj U1 (form (par A B)) K
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H12 : adj KK (form A1) U
H14 : adj U (form B1) U1
H16 : adj U1 (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H12 : adj KK (form A1) U
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : adj U (form A) U2
H20 : adj U2 (form B1) KK1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H12 : adj KK (form A1) U
H18 : mall LL1
H19 : adj U (form A) U2
H21 : adj U2 (form B) U3
H22 : adj U3 (form B1) LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H21 : adj U2 (form B) U3
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H24 : adj U4 (form A1) U2
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert mall (form (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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form (par A1 B1) :: U5) (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 perm (form (par A1 B1) :: U5) (form A :: form B :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 exists A2 KK LL, adj KK A2 (form (par A1 B1) :: U5) /\
   adj LL A2 (form A :: form B :: JJ) /\ perm KK LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 exists KK LL, adj KK (form B) (form (par A1 B1) :: U5) /\
   adj LL (form B) (form A :: form B :: JJ) /\ perm KK LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form (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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 exists LL, adj (form (par A1 B1) :: U4) (form B) (form (par A1 B1) :: U5) /\
   adj LL (form B) (form A :: form B :: JJ) /\
   perm (form (par A1 B1) :: U4) LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 adj (form (par A1 B1) :: U4) (form B) (form (par A1 B1) :: U5) /\
   adj (form A :: JJ) (form B) (form A :: form B :: JJ) /\
   perm (form (par A1 B1) :: U4) (form A :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 adj (form (par A1 B1) :: U4) (form B) (form (par A1 B1) :: U5)

Subgoal 4.2.1.2 is:
 adj (form A :: JJ) (form B) (form A :: form B :: JJ)

Subgoal 4.2.1.3 is:
 perm (form (par A1 B1) :: U4) (form A :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 5, split(apply H8, apply H9)), apply H25)).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 adj (form A :: JJ) (form B) (form A :: form B :: JJ)

Subgoal 4.2.1.3 is:
 perm (form (par A1 B1) :: U4) (form A :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(apply H29, unfold(adj, 1, split(apply H30, apply H10)))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 perm (form (par A1 B1) :: U4) (form A :: JJ)

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 exists A2 KK LL, adj KK A2 (form (par A1 B1) :: U4) /\
   adj LL A2 (form A :: JJ) /\ perm KK LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 exists KK LL, adj KK (form A) (form (par A1 B1) :: U4) /\
   adj LL (form A) (form A :: JJ) /\ perm KK LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form (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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 exists LL, adj (form (par A1 B1) :: KK) (form A) (form (par A1 B1) :: U4) /\
   adj LL (form A) (form A :: JJ) /\ perm (form (par A1 B1) :: KK) LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 adj (form (par A1 B1) :: KK) (form A) (form (par A1 B1) :: U4) /\
   adj JJ (form A) (form A :: JJ) /\ perm (form (par A1 B1) :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 adj (form (par A1 B1) :: KK) (form A) (form (par A1 B1) :: U4)

Subgoal 4.2.1.3.2 is:
 adj JJ (form A) (form A :: JJ)

Subgoal 4.2.1.3.3 is:
 perm (form (par A1 B1) :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 5, split(apply H8, apply H9)), apply H23)).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 adj JJ (form A) (form A :: JJ)

Subgoal 4.2.1.3.3 is:
 perm (form (par A1 B1) :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H29, apply H10)).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
============================
 perm (form (par A1 B1) :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : adj KK (form (par A1 B1)) U6
H32 : adj U6 (form (par A B)) L
============================
 perm (form (par A1 B1) :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : adj KK (form (par A1 B1)) U6
H33 : perm U6 JJ
============================
 perm (form (par A1 B1) :: KK) JJ

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < backchain perm_trans with K = U6.
Witness: apply H33.
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : adj KK (form (par A1 B1)) U6
H33 : perm U6 JJ
============================
 perm (form (par A1 B1) :: KK) U6

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : adj KK (form (par A1 B1)) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 perm (form (par A1 B1) :: KK) U6

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : adj KK (form (par A1 B1)) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 exists A KK1 LL, adj KK1 A (form (par A1 B1) :: KK) /\ adj LL A U6 /\
   perm KK1 LL

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form (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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : adj KK (form (par A1 B1)) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 adj KK (form (par A1 B1)) (form (par A1 B1) :: KK) /\
   adj KK (form (par A1 B1)) U6 /\ perm KK KK

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : adj KK (form (par A1 B1)) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 adj KK (form (par A1 B1)) (form (par A1 B1) :: KK)

Subgoal 4.2.1.3.3.2 is:
 adj KK (form (par A1 B1)) U6

Subgoal 4.2.1.3.3.3 is:
 perm KK KK

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(unfold(is_fm, 5, split(apply H8, apply H9)), apply H34)).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : adj KK (form (par A1 B1)) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 adj KK (form (par A1 B1)) U6

Subgoal 4.2.1.3.3.3 is:
 perm KK KK

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: apply H31.
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : adj KK (form (par A1 B1)) U6
H33 : perm U6 JJ
H34 : is_list KK
============================
 perm KK KK

Subgoal 4.2 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < backchain perm_refl.
Witness: apply H34.
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H28 : mall (form (par A1 B1) :: U5)
H29 : is_fm (form A)
H30 : is_fm (form B)
H31 : perm (form (par A1 B1) :: U5) (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (par A1 B1)) L
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : adj KK (form (par A B)) LL
H18 : mall LL1
H22 : adj U3 (form B1) LL1
H23 : adj KK (form A) U4
H25 : adj U4 (form B) U5
H26 : adj U5 (form A1) U3
H27 : is_list U5
H29 : is_fm (form A)
H30 : is_fm (form B)
H32 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form A :: form B :: JJ] split(split(unfold(adj, 1, split(apply H29, apply H10)), unfold(adj, 2, split(apply H29, unfold(adj, 1, split(apply H30, apply H10))))), apply H32).
Subgoal 5:

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

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H5 : form (par A B) = form bot /\ perm JJ LL \/
       (exists KK, adj KK (form (par A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H5 : form (par A B) = form bot /\ perm JJ LL \/
       (exists KK, adj KK (form (par A B)) LL)
H6 : is_fm (form (par A B))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

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

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

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

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H5 : form (par A B) = form bot /\ perm JJ LL \/
       (exists KK, adj KK (form (par A B)) LL)
H7 : is_fm (form A)
H8 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

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

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert mall (form bot :: LL1).
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form bot :: LL1) (form A :: form B :: JJ).
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 perm (form bot :: LL1) (form A :: form B :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 exists A1 KK LL, adj KK A1 (form bot :: LL1) /\
   adj LL A1 (form A :: form B :: JJ) /\ perm KK LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form B.
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 exists KK LL, adj KK (form B) (form bot :: LL1) /\
   adj LL (form B) (form A :: form B :: JJ) /\ perm KK LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form bot :: KK1.
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 exists LL, adj (form bot :: KK1) (form B) (form bot :: LL1) /\
   adj LL (form B) (form A :: form B :: JJ) /\ perm (form bot :: KK1) LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form A :: JJ.
Subgoal 5.1:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 adj (form bot :: KK1) (form B) (form bot :: LL1) /\
   adj (form A :: JJ) (form B) (form A :: form B :: JJ) /\
   perm (form bot :: KK1) (form A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 adj (form bot :: KK1) (form B) (form bot :: LL1)

Subgoal 5.1.2 is:
 adj (form A :: JJ) (form B) (form A :: form B :: JJ)

Subgoal 5.1.3 is:
 perm (form bot :: KK1) (form A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 6, true), apply H11)).
Subgoal 5.1.2:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 adj (form A :: JJ) (form B) (form A :: form B :: JJ)

Subgoal 5.1.3 is:
 perm (form bot :: KK1) (form A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(apply H7, unfold(adj, 1, split(apply H8, apply H15)))).
Subgoal 5.1.3:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 perm (form bot :: KK1) (form A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 exists A1 KK LL, adj KK A1 (form bot :: KK1) /\ adj LL A1 (form A :: JJ) /\
   perm KK LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form A.
Subgoal 5.1.3:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 exists KK LL, adj KK (form A) (form bot :: KK1) /\
   adj LL (form A) (form A :: JJ) /\ perm KK LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 exists LL, adj (form bot :: KK) (form A) (form bot :: KK1) /\
   adj LL (form A) (form A :: JJ) /\ perm (form bot :: KK) LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 adj (form bot :: KK) (form A) (form bot :: KK1) /\
   adj JJ (form A) (form A :: JJ) /\ perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 adj (form bot :: KK) (form A) (form bot :: KK1)

Subgoal 5.1.3.2 is:
 adj JJ (form A) (form A :: JJ)

Subgoal 5.1.3.3 is:
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 6, true), apply H10)).
Subgoal 5.1.3.2:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 adj JJ (form A) (form A :: JJ)

Subgoal 5.1.3.3 is:
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H7, apply H15)).
Subgoal 5.1.3.3:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
============================
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
H16 : adj KK (form bot) U
H17 : adj U (form (par A B)) L
============================
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
H16 : adj KK (form bot) U
H18 : perm U JJ
============================
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < backchain perm_trans with K = U.
Witness: apply H18.
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
H16 : adj KK (form bot) U
H18 : perm U JJ
============================
 perm (form bot :: KK) U

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
H16 : adj KK (form bot) U
H18 : perm U JJ
H19 : is_list KK
============================
 perm (form bot :: KK) U

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
H16 : adj KK (form bot) U
H18 : perm U JJ
H19 : is_list KK
H20 : perm KK KK
============================
 perm (form bot :: KK) U

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(perm, 2, exists[A = form bot, KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 6, true), apply H19)), apply H16), apply H20)).
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H14 : mall (form bot :: LL1)
H15 : is_list JJ
H16 : perm (form bot :: LL1) (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form bot) L
H7 : is_fm (form A)
H8 : is_fm (form B)
H9 : adj KK (form (par A B)) LL
H10 : adj KK (form A) KK1
H11 : adj KK1 (form B) LL1
H12 : mall LL1
H13 : is_list LL1
H15 : is_list JJ
H17 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form A :: form B :: JJ] split(split(unfold(adj, 1, split(apply H7, apply H15)), unfold(adj, 2, split(apply H7, unfold(adj, 1, split(apply H8, apply H15))))), apply H17).
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
Ht : is_fm (form (par A B))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
Ht : is_fm (form (wth A1 B1))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H13 : form (par A B) = form (wth A1 B1) /\ perm JJ LL \/
        (exists KK, adj KK (form (par A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H17 : adj U (form (par A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H6 : adj LL (form B1) K
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H20 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H7 : mall K *
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H20 : mall LL1
H21 : adj KK (form B1) U1
H22 : adj U1 (form (par A B)) K
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H20 : mall LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H25 : mall LL2
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H20 : mall LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H25 : mall LL2
H26 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply mall_perm to *H20 _ with L = form A1 :: form A :: form B :: KK.
Witness: unfold(perm, 2, exists[A2 = form B, KK1 = KK1, LL = form A1 :: form A :: KK] split(split(apply H19, unfold(adj, 2, split(apply H10, unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H9, apply H15))))))), unfold(perm, 2, exists[A2 = form A, KK2 = U, LL = form A1 :: KK] split(split(apply H18, unfold(adj, 2, split(apply H10, unfold(adj, 1, split(apply H8, apply H15))))), unfold(perm, 2, exists[A = form A1, KK1 = KK, LL = KK] split(split(apply H16, unfold(adj, 1, split(apply H10, apply H15))), apply H26)))))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H25 : mall LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply mall_perm to *H25 _ with L = form B1 :: form A :: form B :: KK.
Witness: unfold(perm, 2, exists[A1 = form B, KK1 = KK2, LL = form B1 :: form A :: KK] split(split(apply H24, unfold(adj, 2, split(apply H11, unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H9, apply H15))))))), unfold(perm, 2, exists[A1 = form A, KK1 = U1, LL = form B1 :: KK] split(split(apply H23, unfold(adj, 2, split(apply H11, unfold(adj, 1, split(apply H8, apply H15))))), unfold(perm, 2, exists[A = form B1, KK1 = KK, LL = KK] split(split(apply H21, unfold(adj, 1, split(apply H11, apply H15))), apply H26)))))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert mall (form (wth A1 B1) :: form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form (wth A1 B1) :: form A :: form B :: KK) (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 perm (form (wth A1 B1) :: form A :: form B :: KK) (form A :: form B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (wth A1 B1) :: form A :: form B :: KK) /\
   adj LL A2 (form A :: form B :: JJ) /\ perm KK1 LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form A, form (wth A1 B1) :: form B :: KK, form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 adj (form (wth A1 B1) :: form B :: KK) (form A)
   (form (wth A1 B1) :: form A :: form B :: KK) /\
   adj (form B :: JJ) (form A) (form A :: form B :: JJ) /\
   perm (form (wth A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 adj (form (wth A1 B1) :: form B :: KK) (form A)
   (form (wth A1 B1) :: form A :: form B :: KK)

Subgoal 6.1.2 is:
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 6.1.3 is:
 perm (form (wth A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 7, split(apply H10, apply H11)), unfold(adj, 1, split(apply H8, unfold(is_list, 2, split(apply H9, apply H15)))))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 6.1.3 is:
 perm (form (wth A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H8, unfold(is_list, 2, split(apply H9, apply H12)))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 perm (form (wth A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 exists A KK1 LL, adj KK1 A (form (wth A1 B1) :: form B :: KK) /\
   adj LL A (form B :: JJ) /\ perm KK1 LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form B, form (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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 adj (form (wth A1 B1) :: KK) (form B) (form (wth A1 B1) :: form B :: KK) /\
   adj JJ (form B) (form B :: JJ) /\ perm (form (wth A1 B1) :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 adj (form (wth A1 B1) :: KK) (form B) (form (wth A1 B1) :: form B :: KK)

Subgoal 6.1.3.2 is:
 adj JJ (form B) (form B :: JJ)

Subgoal 6.1.3.3 is:
 perm (form (wth A1 B1) :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 7, split(apply H10, apply H11)), unfold(adj, 1, split(apply H9, apply H15)))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 adj JJ (form B) (form B :: JJ)

Subgoal 6.1.3.3 is:
 perm (form (wth A1 B1) :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H9, apply H12)).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
============================
 perm (form (wth A1 B1) :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
H30 : adj KK (form (wth A1 B1)) U2
H31 : adj U2 (form (par A B)) L
============================
 perm (form (wth A1 B1) :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
H30 : adj KK (form (wth A1 B1)) U2
H32 : perm U2 JJ
============================
 perm (form (wth A1 B1) :: KK) JJ

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < backchain perm_trans with K = U2.
Witness: unfold(perm, 2, exists[A = form (wth A1 B1), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 7, split(apply H10, apply H11)), apply H15)), apply H30), apply H26)).
Witness: apply H32.
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H29 : mall (form (wth A1 B1) :: form A :: form B :: KK)
H30 : perm (form (wth A1 B1) :: form A :: form B :: KK)
        (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (wth A1 B1)) L
H8 : is_fm (form A)
H9 : is_fm (form B)
H10 : is_fm (form A1)
H11 : is_fm (form B1)
H12 : is_list JJ
H14 : adj KK (form (par A B)) LL
H15 : is_list KK
H16 : adj KK (form A1) U
H18 : adj U (form A) KK1
H19 : adj KK1 (form B) LL1
H21 : adj KK (form B1) U1
H23 : adj U1 (form A) KK2
H24 : adj KK2 (form B) LL2
H26 : perm KK KK
H27 : mall (form A1 :: form A :: form B :: KK)
H28 : mall (form B1 :: form A :: form B :: KK)
H31 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form A :: form B :: JJ] split(split(unfold(adj, 1, split(apply H8, apply H12)), unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H9, apply H12))))), apply H31).
Subgoal 7:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form top) L
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form top) L
Ht : is_fm (form (par A B))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form top) L
H4 : is_fm (form A)
H5 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form top) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form top) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
H7 : form (par A B) = form top /\ perm JJ LL \/
       (exists KK, adj KK (form (par A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form top) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
H8 : adj KK (form (par A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
H9 : adj KK (form top) U
H10 : adj U (form (par A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
H9 : adj KK (form top) U
H11 : perm U JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
H12 : adj KK1 (form top) JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
H12 : adj KK1 (form top) JJ
H13 : is_list KK1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
H12 : adj KK1 (form top) JJ
H13 : is_list KK1
H14 : perm KK1 KK1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form top :: form A :: form B :: KK1) (form A :: form B :: JJ).
Subgoal 7:

Variables: L JJ A B LL KK U KK1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
H12 : adj KK1 (form top) JJ
H13 : is_list KK1
H14 : perm KK1 KK1
H15 : perm (form top :: form A :: form B :: KK1) (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply mall_perm to _ *H15.
Witness: unfold(mall, 7, exists[LL = form A :: form B :: KK1] unfold(adj, 1, split(unfold(is_fm, 8, true), unfold(is_list, 2, split(apply H4, unfold(is_list, 2, split(apply H5, apply H13))))))).
Subgoal 7:

Variables: L JJ A B LL KK U KK1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : is_fm (form A)
H5 : is_fm (form B)
H6 : is_list JJ
H12 : adj KK1 (form top) JJ
H13 : is_list KK1
H14 : perm KK1 KK1
H16 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: form A :: JJ] split(split(unfold(adj, 1, split(apply H4, apply H6)), unfold(adj, 1, split(apply H5, unfold(is_list, 2, split(apply H4, apply H6))))), unfold(mall, 7, exists[LL = form B :: form A :: KK1] unfold(adj, 2, split(apply H5, unfold(adj, 2, split(apply H4, apply H12)))))).
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
Ht : is_fm (form (par A B))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
Ht : is_fm (form (plus A1 B1))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : form (par A B) = form (plus A1 B1) /\ perm JJ LL \/
        (exists KK, adj KK (form (par A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H15 : adj U (form (par A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply mall_perm to *H18 _ with L = form A1 :: form A :: form B :: KK.
Witness: unfold(perm, 2, exists[A2 = form B, KK1 = KK1, LL = form A1 :: form A :: KK] split(split(apply H17, unfold(adj, 2, split(apply H8, unfold(adj, 2, split(apply H6, unfold(adj, 1, split(apply H7, apply H13))))))), unfold(perm, 2, exists[A2 = form A, KK2 = U, LL = form A1 :: KK] split(split(apply H16, unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H6, apply H13))))), unfold(perm, 2, exists[A = form A1, KK1 = KK, LL = KK] split(split(apply H14, unfold(adj, 1, split(apply H8, apply H13))), apply H19)))))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert mall (form (plus A1 B1) :: form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form (plus A1 B1) :: form A :: form B :: KK) (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 perm (form (plus A1 B1) :: form A :: form B :: KK) (form A :: form B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (plus A1 B1) :: form A :: form B :: KK) /\
   adj LL A2 (form A :: form B :: JJ) /\ perm KK1 LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form A, form (plus A1 B1) :: form B :: KK, form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form (plus A1 B1) :: form B :: KK) (form A)
   (form (plus A1 B1) :: form A :: form B :: KK) /\
   adj (form B :: JJ) (form A) (form A :: form B :: JJ) /\
   perm (form (plus A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form (plus A1 B1) :: form B :: KK) (form A)
   (form (plus A1 B1) :: form A :: form B :: KK)

Subgoal 8.1.2 is:
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 8.1.3 is:
 perm (form (plus A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 9, split(apply H8, apply H9)), unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, apply H13)))))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 8.1.3 is:
 perm (form (plus A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, apply H10)))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 perm (form (plus A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 exists A KK1 LL, adj KK1 A (form (plus A1 B1) :: form B :: KK) /\
   adj LL A (form B :: JJ) /\ perm KK1 LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form B, form (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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form (plus A1 B1) :: KK) (form B) (form (plus A1 B1) :: form B :: KK) /\
   adj JJ (form B) (form B :: JJ) /\ perm (form (plus A1 B1) :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form (plus A1 B1) :: KK) (form B) (form (plus A1 B1) :: form B :: KK)

Subgoal 8.1.3.2 is:
 adj JJ (form B) (form B :: JJ)

Subgoal 8.1.3.3 is:
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 9, split(apply H8, apply H9)), unfold(adj, 1, split(apply H7, apply H13)))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj JJ (form B) (form B :: JJ)

Subgoal 8.1.3.3 is:
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H7, apply H10)).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
H22 : adj KK (form (plus A1 B1)) U1
H23 : adj U1 (form (par A B)) L
============================
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
H22 : adj KK (form (plus A1 B1)) U1
H24 : perm U1 JJ
============================
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (plus A1 B1), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 9, split(apply H8, apply H9)), apply H13)), apply H22), apply H19)).
Witness: apply H24.
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
H22 : perm (form (plus A1 B1) :: form A :: form B :: KK)
        (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form A1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form A1 :: form A :: form B :: KK)
H23 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form A :: form B :: JJ] split(split(unfold(adj, 1, split(apply H6, apply H10)), unfold(adj, 2, split(apply H6, unfold(adj, 1, split(apply H7, apply H10))))), apply H23).
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
Ht : is_fm (form (par A B))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
Ht : is_fm (form (plus A1 B1))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H11 : form (par A B) = form (plus A1 B1) /\ perm JJ LL \/
        (exists KK, adj KK (form (par A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H15 : adj U (form (par A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply mall_perm to *H18 _ with L = form B1 :: form A :: form B :: KK.
Witness: unfold(perm, 2, exists[A1 = form B, KK1 = KK1, LL = form B1 :: form A :: KK] split(split(apply H17, unfold(adj, 2, split(apply H9, unfold(adj, 2, split(apply H6, unfold(adj, 1, split(apply H7, apply H13))))))), unfold(perm, 2, exists[A1 = form A, KK2 = U, LL = form B1 :: KK] split(split(apply H16, unfold(adj, 2, split(apply H9, unfold(adj, 1, split(apply H6, apply H13))))), unfold(perm, 2, exists[A = form B1, KK1 = KK, LL = KK] split(split(apply H14, unfold(adj, 1, split(apply H9, apply H13))), apply H19)))))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert mall (form (plus A1 B1) :: form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form (plus A1 B1) :: form A :: form B :: KK) (form A :: form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 perm (form (plus A1 B1) :: form A :: form B :: KK) (form A :: form B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (plus A1 B1) :: form A :: form B :: KK) /\
   adj LL A2 (form A :: form B :: JJ) /\ perm KK1 LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form A, form (plus A1 B1) :: form B :: KK, form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form (plus A1 B1) :: form B :: KK) (form A)
   (form (plus A1 B1) :: form A :: form B :: KK) /\
   adj (form B :: JJ) (form A) (form A :: form B :: JJ) /\
   perm (form (plus A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form (plus A1 B1) :: form B :: KK) (form A)
   (form (plus A1 B1) :: form A :: form B :: KK)

Subgoal 9.1.2 is:
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 9.1.3 is:
 perm (form (plus A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 9, split(apply H8, apply H9)), unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, apply H13)))))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 9.1.3 is:
 perm (form (plus A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, apply H10)))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 perm (form (plus A1 B1) :: form B :: KK) (form B :: JJ)

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 exists A KK1 LL, adj KK1 A (form (plus A1 B1) :: form B :: KK) /\
   adj LL A (form B :: JJ) /\ perm KK1 LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form B, form (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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form (plus A1 B1) :: KK) (form B) (form (plus A1 B1) :: form B :: KK) /\
   adj JJ (form B) (form B :: JJ) /\ perm (form (plus A1 B1) :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj (form (plus A1 B1) :: KK) (form B) (form (plus A1 B1) :: form B :: KK)

Subgoal 9.1.3.2 is:
 adj JJ (form B) (form B :: JJ)

Subgoal 9.1.3.3 is:
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 9, split(apply H8, apply H9)), unfold(adj, 1, split(apply H7, apply H13)))).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 adj JJ (form B) (form B :: JJ)

Subgoal 9.1.3.3 is:
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H7, apply H10)).
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
============================
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
H22 : adj KK (form (plus A1 B1)) U1
H23 : adj U1 (form (par A B)) L
============================
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
H22 : adj KK (form (plus A1 B1)) U1
H24 : perm U1 JJ
============================
 perm (form (plus A1 B1) :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (plus A1 B1), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 9, split(apply H8, apply H9)), apply H13)), apply H22), apply H19)).
Witness: apply H24.
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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H21 : mall (form (plus A1 B1) :: form A :: form B :: KK)
H22 : perm (form (plus A1 B1) :: form A :: form B :: KK)
        (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form 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 (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (plus A1 B1)) L
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form A1)
H9 : is_fm (form B1)
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form B1) U
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H19 : perm KK KK
H20 : mall (form B1 :: form A :: form B :: KK)
H23 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form A :: form B :: JJ] split(split(unfold(adj, 1, split(apply H6, apply H10)), unfold(adj, 2, split(apply H6, unfold(adj, 1, split(apply H7, apply H10))))), apply H23).
Subgoal 10:

Variables: L JJ A B x A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < Ht : apply adj_2_is_o to H2.
Subgoal 10:

Variables: L JJ A B x A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
Ht : is_fm (form (par A B))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < case Ht.
Subgoal 10:

Variables: L JJ A B x A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_2_is_o to H3.
Subgoal 10:

Variables: L JJ A B x A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_2_is_o to H4.
Subgoal 10:

Variables: L JJ A B x A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_1_is_list to H2.
Subgoal 10:

Variables: L JJ A B x A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 10:

Variables: L JJ A B x A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H11 : form (par A B) = form (exs A1) /\ perm JJ LL \/
        (exists KK, adj KK (form (par A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < case H11.
Subgoal 10:

Variables: L JJ A B x A1 LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_1_is_list to H12.
Subgoal 10:

Variables: L JJ A B x A1 LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_swap to H12 H4.
Subgoal 10:

Variables: L JJ A B x A1 LL J KK U
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply IH to H5 H15.
Subgoal 10:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply perm_refl to H13.
Subgoal 10:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply mall_perm to H18 _ with L = form (A1 x) :: form A :: form B :: KK.
Witness: unfold(perm, 2, exists[A2 = form B, KK1 = KK1, LL = form (A1 x) :: form A :: KK] split(split(apply H17, unfold(adj, 2, split(apply H9, unfold(adj, 2, split(apply H6, unfold(adj, 1, split(apply H7, apply H13))))))), unfold(perm, 2, exists[A2 = form A, KK2 = U, LL = form (A1 x) :: KK] split(split(apply H16, unfold(adj, 2, split(apply H9, unfold(adj, 1, split(apply H6, apply H13))))), unfold(perm, 2, exists[A = form (A1 x), KK1 = KK, LL = KK] split(split(apply H14, unfold(adj, 1, split(apply H9, apply H13))), apply H19)))))).
Subgoal 10:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert mall (form (exs A1) :: form A :: form B :: KK).
Subgoal 10:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form (exs A1) :: form A :: form B :: KK) (form A :: form B :: JJ).
Subgoal 10.1:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 perm (form (exs A1) :: form A :: form B :: KK) (form A :: form B :: JJ)

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < unfold.
Subgoal 10.1:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (exs A1) :: form A :: form B :: KK) /\
   adj LL A2 (form A :: form B :: JJ) /\ perm KK1 LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form A, form (exs A1) :: form B :: KK, form B :: JJ.
Subgoal 10.1:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 adj (form (exs A1) :: form B :: KK) (form A)
   (form (exs A1) :: form A :: form B :: KK) /\
   adj (form B :: JJ) (form A) (form A :: form B :: JJ) /\
   perm (form (exs A1) :: form B :: KK) (form B :: JJ)

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < split.
Subgoal 10.1.1:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 adj (form (exs A1) :: form B :: KK) (form A)
   (form (exs A1) :: form A :: form B :: KK)

Subgoal 10.1.2 is:
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 10.1.3 is:
 perm (form (exs A1) :: form B :: KK) (form B :: JJ)

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, apply H13)))))).
Subgoal 10.1.2:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 10.1.3 is:
 perm (form (exs A1) :: form B :: KK) (form B :: JJ)

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, apply H10)))).
Subgoal 10.1.3:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 perm (form (exs A1) :: form B :: KK) (form B :: JJ)

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < unfold.
Subgoal 10.1.3:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 exists A KK1 LL, adj KK1 A (form (exs A1) :: form B :: KK) /\
   adj LL A (form B :: JJ) /\ perm KK1 LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form B, form (exs A1) :: KK, JJ.
Subgoal 10.1.3:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 adj (form (exs A1) :: KK) (form B) (form (exs A1) :: form B :: KK) /\
   adj JJ (form B) (form B :: JJ) /\ perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < split.
Subgoal 10.1.3.1:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 adj (form (exs A1) :: KK) (form B) (form (exs A1) :: form B :: KK)

Subgoal 10.1.3.2 is:
 adj JJ (form B) (form B :: JJ)

Subgoal 10.1.3.3 is:
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H7, apply H13)))).
Subgoal 10.1.3.2:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 adj JJ (form B) (form B :: JJ)

Subgoal 10.1.3.3 is:
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H7, apply H10)).
Subgoal 10.1.3.3:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
============================
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_swap to *H12 *H3.
Subgoal 10.1.3.3:

Variables: L JJ A B x A1 LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
H22 : adj KK (form (exs A1)) U1
H23 : adj U1 (form (par A B)) L
============================
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_same_result to *H23 H2.
Subgoal 10.1.3.3:

Variables: L JJ A B x A1 LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
H22 : adj KK (form (exs A1)) U1
H24 : perm U1 JJ
============================
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (exs A1), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(apply H8, apply H13)), apply H22), apply H19)).
Witness: apply H24.
Subgoal 10:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H21 : mall (form (exs A1) :: form A :: form B :: KK)
H22 : perm (form (exs A1) :: form A :: form B :: KK) (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply mall_perm to *H21 *H22.
Subgoal 10:

Variables: L JJ A B x A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (exs A1))
H9 : is_fm (form (A1 x))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 x)) U
H15 : adj U (form (par A B)) J
H16 : adj U (form A) KK1
H17 : adj KK1 (form B) LL1
H18 : mall LL1
H19 : perm KK KK
H20 : mall (form (A1 x) :: form A :: form B :: KK)
H23 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form A :: form B :: JJ] split(split(unfold(adj, 1, split(apply H6, apply H10)), unfold(adj, 2, split(apply H6, unfold(adj, 1, split(apply H7, apply H10))))), apply H23).
Subgoal 11:

Variables: L JJ A B A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < Ht : apply adj_2_is_o to H2.
Subgoal 11:

Variables: L JJ A B A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
Ht : is_fm (form (par A B))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < case Ht.
Subgoal 11:

Variables: L JJ A B A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_2_is_o to H3.
Subgoal 11:

Variables: L JJ A B A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_2_is_o to H4.
Subgoal 11:

Variables: L JJ A B A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_1_is_list to H2.
Subgoal 11:

Variables: L JJ A B A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_same_result_diff to H2 H3.
Subgoal 11:

Variables: L JJ A B A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H11 : form (par A B) = form (all A1) /\ perm JJ LL \/
        (exists KK, adj KK (form (par A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < case H11.
Subgoal 11:

Variables: L JJ A B A1 LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_1_is_list to H12.
Subgoal 11:

Variables: L JJ A B A1 LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_swap to H12 H4.
Subgoal 11:

Variables: L JJ A B A1 LL J KK U
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply IH to H5 H15.
Subgoal 11:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply perm_refl to H13.
Subgoal 11:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply mall_perm to H18 _ with L = form (A1 n1) :: form A :: form B :: KK.
Witness: unfold(perm, 2, exists[A2 = form B, KK1 = KK1 n1, LL = form (A1 n1) :: form A :: KK] split(split(apply H17, unfold(adj, 2, split(apply H9, unfold(adj, 2, split(apply H6, unfold(adj, 1, split(apply H7, apply H13))))))), unfold(perm, 2, exists[A2 = form A, KK2 = U n1, LL = form (A1 n1) :: KK] split(split(apply H16, unfold(adj, 2, split(apply H9, unfold(adj, 1, split(apply H6, apply H13))))), unfold(perm, 2, exists[A = form (A1 n1), KK1 = KK, LL = KK] split(split(apply H14, unfold(adj, 1, split(apply H9, apply H13))), apply H19)))))).
Subgoal 11:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert mall (form (all A1) :: form A :: form B :: KK).
Subgoal 11:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < assert perm (form (all A1) :: form A :: form B :: KK) (form A :: form B :: JJ).
Subgoal 11.1:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 perm (form (all A1) :: form A :: form B :: KK) (form A :: form B :: JJ)

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < unfold.
Subgoal 11.1:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (all A1) :: form A :: form B :: KK) /\
   adj LL A2 (form A :: form B :: JJ) /\ perm KK1 LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form A, form (all A1) :: form B :: KK, form B :: JJ.
Subgoal 11.1:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 adj (form (all A1) :: form B :: KK) (form A)
   (form (all A1) :: form A :: form B :: KK) /\
   adj (form B :: JJ) (form A) (form A :: form B :: JJ) /\
   perm (form (all A1) :: form B :: KK) (form B :: JJ)

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < split.
Subgoal 11.1.1:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 adj (form (all A1) :: form B :: KK) (form A)
   (form (all A1) :: form A :: form B :: KK)

Subgoal 11.1.2 is:
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 11.1.3 is:
 perm (form (all A1) :: form B :: KK) (form B :: JJ)

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, apply H13)))))).
Subgoal 11.1.2:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 adj (form B :: JJ) (form A) (form A :: form B :: JJ)

Subgoal 11.1.3 is:
 perm (form (all A1) :: form B :: KK) (form B :: JJ)

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H6, unfold(is_list, 2, split(apply H7, apply H10)))).
Subgoal 11.1.3:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 perm (form (all A1) :: form B :: KK) (form B :: JJ)

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < unfold.
Subgoal 11.1.3:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 exists A KK1 LL, adj KK1 A (form (all A1) :: form B :: KK) /\
   adj LL A (form B :: JJ) /\ perm KK1 LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < witness form B, form (all A1) :: KK, JJ.
Subgoal 11.1.3:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 adj (form (all A1) :: KK) (form B) (form (all A1) :: form B :: KK) /\
   adj JJ (form B) (form B :: JJ) /\ perm (form (all A1) :: KK) JJ

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < split.
Subgoal 11.1.3.1:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 adj (form (all A1) :: KK) (form B) (form (all A1) :: form B :: KK)

Subgoal 11.1.3.2 is:
 adj JJ (form B) (form B :: JJ)

Subgoal 11.1.3.3 is:
 perm (form (all A1) :: KK) JJ

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H7, apply H13)))).
Subgoal 11.1.3.2:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 adj JJ (form B) (form B :: JJ)

Subgoal 11.1.3.3 is:
 perm (form (all A1) :: KK) JJ

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: unfold(adj, 1, split(apply H7, apply H10)).
Subgoal 11.1.3.3:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
============================
 perm (form (all A1) :: KK) JJ

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_swap to *H12 *H3.
Subgoal 11.1.3.3:

Variables: L JJ A B A1 LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
H22 : adj KK (form (all A1)) U1
H23 : adj U1 (form (par A B)) L
============================
 perm (form (all A1) :: KK) JJ

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply adj_same_result to *H23 H2.
Subgoal 11.1.3.3:

Variables: L JJ A B A1 LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
H22 : adj KK (form (all A1)) U1
H24 : perm U1 JJ
============================
 perm (form (all A1) :: KK) JJ

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (all A1), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(apply H8, apply H13)), apply H22), apply H19)).
Witness: apply H24.
Subgoal 11:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H21 : mall (form (all A1) :: form A :: form B :: KK)
H22 : perm (form (all A1) :: form A :: form B :: KK) (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < apply mall_perm to *H21 *H22.
Subgoal 11:

Variables: L JJ A B A1 LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (par A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL)
H2 : adj JJ (form (par A B)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form A)
H7 : is_fm (form B)
H8 : is_fm (form (all A1))
H9 : is_fm (form (A1 n1))
H10 : is_list JJ
H12 : adj KK (form (par A B)) LL
H13 : is_list KK
H14 : adj KK (form (A1 n1)) (U n1)
H15 : adj (U n1) (form (par A B)) (J n1)
H16 : adj (U n1) (form A) (KK1 n1)
H17 : adj (KK1 n1) (form B) (LL1 n1)
H18 : mall (LL1 n1)
H19 : perm KK KK
H20 : mall (form (A1 n1) :: form A :: form B :: KK)
H23 : mall (form A :: form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ adj KK (form B) LL /\ mall LL

par_inv < search.
Witness: exists[KK = form A :: JJ, LL = form A :: form B :: JJ] split(split(unfold(adj, 1, split(apply H6, apply H10)), unfold(adj, 2, split(apply H6, unfold(adj, 1, split(apply H7, apply H10))))), apply H23).
Proof completed.
Abella < Theorem wth_inv : 
forall L JJ A B, mall L -> adj JJ (form (wth A B)) L ->
  (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
       mall LL).


============================
 forall L JJ A B, mall L -> adj JJ (form (wth A B)) L ->
   (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
        mall LL)

wth_inv < induction on 1.

IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
============================
 forall L JJ A B, mall L @ -> adj JJ (form (wth A B)) L ->
   (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
        mall LL)

wth_inv < intros.

Variables: L JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H1 : mall L @
H2 : adj JJ (form (wth A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H1 : mall L @
H2 : adj JJ (form (wth A B)) L
Ht : is_fm (form (wth A B))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < Hfm1 : case Ht.

Variables: L JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H1 : mall L @
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H1 : mall L @
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
H4 : form (wth A B) = form (atom A1) /\ perm JJ (form (natom A1) :: nil) \/
       (exists KK, adj KK (form (wth A B)) (form (natom A1) :: nil))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
H5 : adj KK (form (wth A B)) (form (natom A1) :: nil)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
H6 : is_fm (form (natom A1))
H7 : adj K (form (wth A B)) nil
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens A1 B1)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B1) K
H8 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C B1)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form B1) K
H8 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
Ht : is_fm (form (tens C D))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : form (wth A B) = form (tens C D) /\ perm JJ LL \/
       (exists KK, adj KK (form (wth A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H10 : adj KK1 (form (wth A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H11 : (exists JJ, adj JJ (form (wth A B)) JJ1 /\ merge JJ KK KK1) \/
        (exists KK2, adj KK2 (form (wth A B)) KK /\ merge JJ1 KK2 KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form C) U
H15 : adj U (form (wth A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form C) U
H16 : adj U (form A) KK2
H17 : mall KK2
H18 : adj U (form B) LL1
H19 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form C) U
H16 : adj U (form A) KK2
H17 : mall KK2
H18 : adj U (form B) LL1
H19 : mall LL1
H20 : is_list JJ2
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form C) U
H16 : adj U (form A) KK2
H17 : mall KK2
H18 : adj U (form B) LL1
H19 : mall LL1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H17 _ with L = form C :: form A :: JJ2.
Witness: unfold(perm, 2, exists[A1 = form A, KK = U, LL = form C :: JJ2] split(split(apply H16, unfold(adj, 2, split(apply Hfm3, unfold(adj, 1, split(apply Hfm1, apply H20))))), unfold(perm, 2, exists[A = form C, KK = JJ2, LL = JJ2] split(split(apply H14, unfold(adj, 1, split(apply Hfm3, apply H20))), apply H21)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form C) U
H16 : adj U (form A) KK2
H18 : adj U (form B) LL1
H19 : mall LL1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = form C :: form B :: JJ2.
Witness: unfold(perm, 2, exists[A = form B, KK = U, LL = form C :: JJ2] split(split(apply H18, unfold(adj, 2, split(apply Hfm3, unfold(adj, 1, split(apply Hfm2, apply H20))))), unfold(perm, 2, exists[A = form C, KK = JJ2, LL = JJ2] split(split(apply H14, unfold(adj, 1, split(apply Hfm3, apply H20))), apply H21)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form C) U
H16 : adj U (form A) KK2
H18 : adj U (form B) LL1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form (tens C D) :: form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form (tens C D) :: form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H28 : merge JJ2 KK LL2
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H28 : merge JJ2 KK LL2
H29 : adj LL2 (form (tens C D)) U1
H30 : adj U1 (form (wth A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H13 : merge JJ2 KK KK1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H28 : merge JJ2 KK LL2
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form (tens C D) :: form A :: KK1) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 perm (form (tens C D) :: form A :: KK1) (form A :: JJ)

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 exists A1 KK LL, adj KK A1 (form (tens C D) :: form A :: KK1) /\
   adj LL A1 (form A :: JJ) /\ perm KK LL

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < witness form A, form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 adj (form (tens C D) :: KK1) (form A) (form (tens C D) :: form A :: KK1) /\
   adj JJ (form A) (form A :: JJ) /\ perm (form (tens C D) :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 adj (form (tens C D) :: KK1) (form A) (form (tens C D) :: form A :: KK1)

Subgoal 2.1.1.2 is:
 adj JJ (form A) (form A :: JJ)

Subgoal 2.1.1.3 is:
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 3, split(apply Hfm3, apply Hfm4)), unfold(adj, 1, split(apply Hfm1, apply H24)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 adj JJ (form A) (form A :: JJ)

Subgoal 2.1.1.3 is:
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm1, apply HJJ)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
============================
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (tens C D), KK = KK1, LL = LL2] split(split(unfold(adj, 1, split(unfold(is_fm, 3, split(apply Hfm3, apply Hfm4)), apply H24)), apply H29), apply H32)).
Witness: apply H31.
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H25 : mall (form (tens C D) :: form A :: KK1)
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H33 : perm (form (tens C D) :: form A :: KK1) (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form (tens C D) :: form B :: KK1) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (form A :: JJ)
============================
 perm (form (tens C D) :: form B :: KK1) (form B :: JJ)

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (form A :: JJ)
============================
 exists A KK LL, adj KK A (form (tens C D) :: form B :: KK1) /\
   adj LL A (form B :: JJ) /\ perm KK LL

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < witness form B, form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (form A :: JJ)
============================
 adj (form (tens C D) :: KK1) (form B) (form (tens C D) :: form B :: KK1) /\
   adj JJ (form B) (form B :: JJ) /\ perm (form (tens C D) :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (form A :: JJ)
============================
 adj (form (tens C D) :: KK1) (form B) (form (tens C D) :: form B :: KK1)

Subgoal 2.1.2.2 is:
 adj JJ (form B) (form B :: JJ)

Subgoal 2.1.2.3 is:
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 3, split(apply Hfm3, apply Hfm4)), unfold(adj, 1, split(apply Hfm2, apply H24)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (form A :: JJ)
============================
 adj JJ (form B) (form B :: JJ)

Subgoal 2.1.2.3 is:
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm2, apply HJJ)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (form A :: JJ)
============================
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.1 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (tens C D), KK = KK1, LL = LL2] split(split(unfold(adj, 1, split(unfold(is_fm, 3, split(apply Hfm3, apply Hfm4)), apply H24)), apply H29), apply H32)).
Witness: apply H31.
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H26 : mall (form (tens C D) :: form B :: KK1)
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (form A :: JJ)
H35 : perm (form (tens C D) :: form B :: KK1) (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj JJ2 (form (wth A B)) JJ1
H20 : is_list JJ2
H21 : perm JJ2 JJ2
H22 : mall (form C :: form A :: JJ2)
H23 : mall (form C :: form B :: JJ2)
H24 : is_list KK1
H27 : adj LL2 (form (wth A B)) LL
H29 : adj LL2 (form (tens C D)) U1
H31 : perm U1 JJ
H32 : perm KK1 LL2
H34 : mall (form A :: JJ)
H36 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H34), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H36).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
H8 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form D) U
H15 : adj U (form (wth A B)) K
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form D) U
H16 : adj U (form A) KK3
H17 : mall KK3
H18 : adj U (form B) LL1
H19 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form D) U
H16 : adj U (form A) KK3
H17 : mall KK3
H18 : adj U (form B) LL1
H19 : mall LL1
H20 : is_list KK2
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form D) U
H16 : adj U (form A) KK3
H17 : mall KK3
H18 : adj U (form B) LL1
H19 : mall LL1
H20 : is_list KK2
H21 : perm KK2 KK2
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H17 _ with L = form D :: form A :: KK2.
Witness: unfold(perm, 2, exists[A1 = form A, KK = U, LL = form D :: KK2] split(split(apply H16, unfold(adj, 2, split(apply Hfm4, unfold(adj, 1, split(apply Hfm1, apply H20))))), unfold(perm, 2, exists[A = form D, KK = KK2, LL = KK2] split(split(apply H14, unfold(adj, 1, split(apply Hfm4, apply H20))), apply H21)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form D) U
H16 : adj U (form A) KK3
H18 : adj U (form B) LL1
H19 : mall LL1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = form D :: form B :: KK2.
Witness: unfold(perm, 2, exists[A = form B, KK = U, LL = form D :: KK2] split(split(apply H18, unfold(adj, 2, split(apply Hfm4, unfold(adj, 1, split(apply Hfm2, apply H20))))), unfold(perm, 2, exists[A = form D, KK = KK2, LL = KK2] split(split(apply H14, unfold(adj, 1, split(apply Hfm4, apply H20))), apply H21)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form D) U
H16 : adj U (form A) KK3
H18 : adj U (form B) LL1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert merge JJ1 (form A :: KK2) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form (tens C D) :: form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert merge JJ1 (form B :: KK2) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form (tens C D) :: form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H30 : merge JJ1 KK2 LL2
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H30 : merge JJ1 KK2 LL2
H31 : adj LL2 (form (tens C D)) U1
H32 : adj U1 (form (wth A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H13 : merge JJ1 KK2 KK1
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H30 : merge JJ1 KK2 LL2
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form (tens C D) :: form A :: KK1) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 perm (form (tens C D) :: form A :: KK1) (form A :: JJ)

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 exists A1 KK LL, adj KK A1 (form (tens C D) :: form A :: KK1) /\
   adj LL A1 (form A :: JJ) /\ perm KK LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < witness form A, form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 adj (form (tens C D) :: KK1) (form A) (form (tens C D) :: form A :: KK1) /\
   adj JJ (form A) (form A :: JJ) /\ perm (form (tens C D) :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 adj (form (tens C D) :: KK1) (form A) (form (tens C D) :: form A :: KK1)

Subgoal 2.2.1.2 is:
 adj JJ (form A) (form A :: JJ)

Subgoal 2.2.1.3 is:
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 3, split(apply Hfm3, apply Hfm4)), unfold(adj, 1, split(apply Hfm1, apply H24)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 adj JJ (form A) (form A :: JJ)

Subgoal 2.2.1.3 is:
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm1, apply HJJ)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
============================
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (tens C D), KK = KK1, LL = LL2] split(split(unfold(adj, 1, split(unfold(is_fm, 3, split(apply Hfm3, apply Hfm4)), apply H24)), apply H31), apply H34)).
Witness: apply H33.
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H26 : mall (form (tens C D) :: form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H35 : perm (form (tens C D) :: form A :: KK1) (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form (tens C D) :: form B :: KK1) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (form A :: JJ)
============================
 perm (form (tens C D) :: form B :: KK1) (form B :: JJ)

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (form A :: JJ)
============================
 exists A KK LL, adj KK A (form (tens C D) :: form B :: KK1) /\
   adj LL A (form B :: JJ) /\ perm KK LL

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < witness form B, form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (form A :: JJ)
============================
 adj (form (tens C D) :: KK1) (form B) (form (tens C D) :: form B :: KK1) /\
   adj JJ (form B) (form B :: JJ) /\ perm (form (tens C D) :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (form A :: JJ)
============================
 adj (form (tens C D) :: KK1) (form B) (form (tens C D) :: form B :: KK1)

Subgoal 2.2.2.2 is:
 adj JJ (form B) (form B :: JJ)

Subgoal 2.2.2.3 is:
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 3, split(apply Hfm3, apply Hfm4)), unfold(adj, 1, split(apply Hfm2, apply H24)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (form A :: JJ)
============================
 adj JJ (form B) (form B :: JJ)

Subgoal 2.2.2.3 is:
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm2, apply HJJ)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (form A :: JJ)
============================
 perm (form (tens C D) :: KK1) JJ

Subgoal 2.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (tens C D), KK = KK1, LL = LL2] split(split(unfold(adj, 1, split(unfold(is_fm, 3, split(apply Hfm3, apply Hfm4)), apply H24)), apply H31), apply H34)).
Witness: apply H33.
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H28 : mall (form (tens C D) :: form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (form A :: JJ)
H37 : perm (form (tens C D) :: form B :: KK1) (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (tens C D)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form C) J
H6 : mall J *
H7 : adj KK (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H12 : adj KK2 (form (wth A B)) KK
H20 : is_list KK2
H21 : perm KK2 KK2
H22 : mall (form D :: form A :: KK2)
H23 : mall (form D :: form B :: KK2)
H24 : is_list KK1
H25 : merge JJ1 (form A :: KK2) (form A :: KK1)
H27 : merge JJ1 (form B :: KK2) (form B :: KK1)
H29 : adj LL2 (form (wth A B)) LL
H31 : adj LL2 (form (tens C D)) U1
H33 : perm U1 JJ
H34 : perm KK1 LL2
H36 : mall (form A :: JJ)
H38 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 3 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H36), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H38).
Subgoal 3:

Variables: JJ A B
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) (form one :: nil)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < case H2.
Subgoal 3:

Variables: A B K
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list (form one :: K)
H3 : is_fm (form one)
H4 : adj K (form (wth A B)) nil
============================
 exists KK LL, adj (form one :: K) (form A) KK /\ mall KK /\
   adj (form one :: K) (form B) LL /\ mall LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par A1 B1)) L
H4 : adj LL (form A1) J
H5 : adj J (form B1) K
H6 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C B1)) L
H4 : adj LL (form C) J
H5 : adj J (form B1) K
H6 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
H4 : adj LL (form C) J
H5 : adj J (form D) K
H6 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
H4 : adj LL (form C) J
H5 : adj J (form D) K
H6 : mall K *
Ht : is_fm (form (par C D))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
H4 : adj LL (form C) J
H5 : adj J (form D) K
H6 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
H4 : adj LL (form C) J
H5 : adj J (form D) K
H6 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : form (wth A B) = form (par C D) /\ perm JJ LL \/
       (exists KK, adj KK (form (wth A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
H4 : adj LL (form C) J
H5 : adj J (form D) K
H6 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
H5 : adj J (form D) K
H6 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H10 : adj U (form (wth A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
H6 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H12 : adj U1 (form (wth A B)) K
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H14 : mall KK1
H15 : adj U1 (form B) LL1
H16 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H14 : mall KK1
H15 : adj U1 (form B) LL1
H16 : mall LL1
H17 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H14 : mall KK1
H15 : adj U1 (form B) LL1
H16 : mall LL1
H17 : is_list KK
H18 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H14 _ with L = form A :: form C :: form D :: KK.
Witness: unfold(perm, 2, exists[A1 = form A, KK2 = U1, LL = form C :: form D :: KK] split(split(apply H13, unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(apply Hfm3, unfold(is_list, 2, split(apply Hfm4, apply H17))))))), unfold(perm, 2, exists[A = form D, KK1 = U, LL = form C :: KK] split(split(apply H11, unfold(adj, 2, split(apply Hfm3, unfold(adj, 1, split(apply Hfm4, apply H17))))), unfold(perm, 2, exists[A = form C, KK1 = KK, LL = KK] split(split(apply H9, unfold(adj, 1, split(apply Hfm3, apply H17))), apply H18)))))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H16 : mall LL1
H17 : is_list KK
H18 : perm KK KK
H19 : mall (form A :: form C :: form D :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H16 _ with L = form B :: form C :: form D :: KK.
Witness: unfold(perm, 2, exists[A = form B, KK1 = U1, LL = form C :: form D :: KK] split(split(apply H15, unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(apply Hfm3, unfold(is_list, 2, split(apply Hfm4, apply H17))))))), unfold(perm, 2, exists[A = form D, KK1 = U, LL = form C :: KK] split(split(apply H11, unfold(adj, 2, split(apply Hfm3, unfold(adj, 1, split(apply Hfm4, apply H17))))), unfold(perm, 2, exists[A = form C, KK1 = KK, LL = KK] split(split(apply H9, unfold(adj, 1, split(apply Hfm3, apply H17))), apply H18)))))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H19 : mall (form A :: form C :: form D :: KK)
H20 : mall (form B :: form C :: form D :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form A :: form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H19 : mall (form A :: form C :: form D :: KK)
H20 : mall (form B :: form C :: form D :: KK)
H21 : mall (form A :: form (par C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H20 : mall (form B :: form C :: form D :: KK)
H21 : mall (form A :: form (par C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form B :: form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H20 : mall (form B :: form C :: form D :: KK)
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H24 : adj U2 (form (wth A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form A :: form (par C D) :: KK) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
============================
 perm (form A :: form (par C D) :: KK) (form A :: JJ)

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
============================
 exists A1 KK1 LL, adj KK1 A1 (form A :: form (par C D) :: KK) /\
   adj LL A1 (form A :: JJ) /\ perm KK1 LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < witness form A, form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
============================
 adj (form (par C D) :: KK) (form A) (form A :: form (par C D) :: KK) /\
   adj JJ (form A) (form A :: JJ) /\ perm (form (par C D) :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
============================
 adj (form (par C D) :: KK) (form A) (form A :: form (par C D) :: KK)

Subgoal 4.1.2 is:
 adj JJ (form A) (form A :: JJ)

Subgoal 4.1.3 is:
 perm (form (par C D) :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(unfold(is_fm, 5, split(apply Hfm3, apply Hfm4)), apply H17)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
============================
 adj JJ (form A) (form A :: JJ)

Subgoal 4.1.3 is:
 perm (form (par C D) :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm1, apply HJJ)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
============================
 perm (form (par C D) :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U2.
Witness: unfold(perm, 2, exists[A = form (par C D), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 5, split(apply Hfm3, apply Hfm4)), apply H17)), apply H23), apply H18)).
Witness: apply H25.
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H21 : mall (form A :: form (par C D) :: KK)
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H26 : perm (form A :: form (par C D) :: KK) (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H27 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form B :: form (par C D) :: KK) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H27 : mall (form A :: JJ)
============================
 perm (form B :: form (par C D) :: KK) (form B :: JJ)

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H27 : mall (form A :: JJ)
============================
 exists A KK1 LL, adj KK1 A (form B :: form (par C D) :: KK) /\
   adj LL A (form B :: JJ) /\ perm KK1 LL

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < witness form B, form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H27 : mall (form A :: JJ)
============================
 adj (form (par C D) :: KK) (form B) (form B :: form (par C D) :: KK) /\
   adj JJ (form B) (form B :: JJ) /\ perm (form (par C D) :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H27 : mall (form A :: JJ)
============================
 adj (form (par C D) :: KK) (form B) (form B :: form (par C D) :: KK)

Subgoal 4.2.2 is:
 adj JJ (form B) (form B :: JJ)

Subgoal 4.2.3 is:
 perm (form (par C D) :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(unfold(is_fm, 5, split(apply Hfm3, apply Hfm4)), apply H17)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H27 : mall (form A :: JJ)
============================
 adj JJ (form B) (form B :: JJ)

Subgoal 4.2.3 is:
 perm (form (par C D) :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm2, apply HJJ)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H27 : mall (form A :: JJ)
============================
 perm (form (par C D) :: KK) JJ

Subgoal 4 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U2.
Witness: unfold(perm, 2, exists[A = form (par C D), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 5, split(apply Hfm3, apply Hfm4)), apply H17)), apply H23), apply H18)).
Witness: apply H25.
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H22 : mall (form B :: form (par C D) :: KK)
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H27 : mall (form A :: JJ)
H28 : perm (form B :: form (par C D) :: KK) (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (par C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form (wth A B)) LL
H9 : adj KK (form C) U
H11 : adj U (form D) U1
H13 : adj U1 (form A) KK1
H15 : adj U1 (form B) LL1
H17 : is_list KK
H18 : perm KK KK
H23 : adj KK (form (par C D)) U2
H25 : perm U2 JJ
H27 : mall (form A :: JJ)
H29 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H27), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H29).
Subgoal 5:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form bot) L
H4 : mall LL *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form bot) L
H4 : mall LL *
H5 : form (wth A B) = form bot /\ perm JJ LL \/
       (exists KK, adj KK (form (wth A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form bot) L
H4 : mall LL *
H6 : adj KK (form (wth A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form bot) L
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H8 : mall KK1
H9 : adj KK (form B) LL1
H10 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form bot) L
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H8 : mall KK1
H9 : adj KK (form B) LL1
H10 : mall LL1
H11 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form bot) L
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H8 : mall KK1
H9 : adj KK (form B) LL1
H10 : mall LL1
H11 : is_list KK
H12 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H8 _ with L = form A :: KK.
Witness: unfold(perm, 2, exists[A1 = form A, KK2 = KK, LL = KK] split(split(apply H7, unfold(adj, 1, split(apply Hfm1, apply H11))), apply H12)).
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form bot) L
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H10 : mall LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H10 _ with L = form B :: KK.
Witness: unfold(perm, 2, exists[A = form B, KK1 = KK, LL = KK] split(split(apply H9, unfold(adj, 1, split(apply Hfm2, apply H11))), apply H12)).
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form bot) L
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H16 : adj U (form (wth A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form A :: form bot :: KK) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
============================
 perm (form A :: form bot :: KK) (form A :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
============================
 exists A1 KK1 LL, adj KK1 A1 (form A :: form bot :: KK) /\
   adj LL A1 (form A :: JJ) /\ perm KK1 LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < witness form A, form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
============================
 adj (form bot :: KK) (form A) (form A :: form bot :: KK) /\
   adj JJ (form A) (form A :: JJ) /\ perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
============================
 adj (form bot :: KK) (form A) (form A :: form bot :: KK)

Subgoal 5.1.2 is:
 adj JJ (form A) (form A :: JJ)

Subgoal 5.1.3 is:
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(unfold(is_fm, 6, true), apply H11)))).
Subgoal 5.1.2:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
============================
 adj JJ (form A) (form A :: JJ)

Subgoal 5.1.3 is:
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm1, apply HJJ)).
Subgoal 5.1.3:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
============================
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U.
Witness: unfold(perm, 2, exists[A = form bot, KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 6, true), apply H11)), apply H15), apply H12)).
Witness: apply H17.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H18 : perm (form A :: form bot :: KK) (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to _ *H18.
Witness: unfold(mall, 5, exists[LL = form A :: KK] split(unfold(adj, 2, split(apply Hfm1, unfold(adj, 1, split(unfold(is_fm, 6, true), apply H11)))), apply H13)).
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H13 : mall (form A :: KK)
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form B :: form bot :: KK) (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
============================
 perm (form B :: form bot :: KK) (form B :: JJ)

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
============================
 exists A KK1 LL, adj KK1 A (form B :: form bot :: KK) /\
   adj LL A (form B :: JJ) /\ perm KK1 LL

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < witness form B, form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
============================
 adj (form bot :: KK) (form B) (form B :: form bot :: KK) /\
   adj JJ (form B) (form B :: JJ) /\ perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
============================
 adj (form bot :: KK) (form B) (form B :: form bot :: KK)

Subgoal 5.2.2 is:
 adj JJ (form B) (form B :: JJ)

Subgoal 5.2.3 is:
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(unfold(is_fm, 6, true), apply H11)))).
Subgoal 5.2.2:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
============================
 adj JJ (form B) (form B :: JJ)

Subgoal 5.2.3 is:
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: unfold(adj, 1, split(apply Hfm2, apply HJJ)).
Subgoal 5.2.3:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
============================
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U.
Witness: unfold(perm, 2, exists[A = form bot, KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 6, true), apply H11)), apply H15), apply H12)).
Witness: apply H17.
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
H20 : perm (form B :: form bot :: KK) (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to _ *H20.
Witness: unfold(mall, 5, exists[LL = form B :: KK] split(unfold(adj, 2, split(apply Hfm2, unfold(adj, 1, split(unfold(is_fm, 6, true), apply H11)))), apply H14)).
Subgoal 5:

Variables: L JJ A B LL KK KK1 LL1 U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H14 : mall (form B :: KK)
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
H21 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H6 : adj KK (form (wth A B)) LL
H7 : adj KK (form A) KK1
H9 : adj KK (form B) LL1
H11 : is_list KK
H12 : perm KK KK
H15 : adj KK (form bot) U
H17 : perm U JJ
H19 : mall (form A :: JJ)
H21 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 6 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H19), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H21).
Subgoal 6:

Variables: L JJ A B A1 B1 LL J K
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C B1)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form B1) K
H7 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
Ht : is_fm (form (wth C D))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : form (wth A B) = form (wth C D) /\ perm JJ LL \/
       (exists KK, adj KK (form (wth A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth C D)) L
Hfm1 : is_fm (form C)
Hfm2 : is_fm (form D)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : perm JJ LL
============================
 exists KK LL, adj JJ (form C) KK /\ mall KK /\ adj JJ (form D) LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth C D)) L
Hfm1 : is_fm (form C)
Hfm2 : is_fm (form D)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : perm JJ LL
H10 : is_list JJ
============================
 exists KK LL, adj JJ (form C) KK /\ mall KK /\ adj JJ (form D) LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth C D)) L
Hfm1 : is_fm (form C)
Hfm2 : is_fm (form D)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : perm JJ LL
H10 : is_list JJ
H11 : perm JJ JJ
============================
 exists KK LL, adj JJ (form C) KK /\ mall KK /\ adj JJ (form D) LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth C D)) L
Hfm1 : is_fm (form C)
Hfm2 : is_fm (form D)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H10 : is_list JJ
H11 : perm JJ JJ
H12 : perm LL JJ
============================
 exists KK LL, adj JJ (form C) KK /\ mall KK /\ adj JJ (form D) LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H5 _ with L = form C :: JJ.
Witness: unfold(perm, 2, exists[A = form C, KK = LL, LL = JJ] split(split(apply H4, unfold(adj, 1, split(apply Hfm1, apply HJJ))), apply H12)).
Subgoal 6.1:

Variables: L JJ C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth C D)) L
Hfm1 : is_fm (form C)
Hfm2 : is_fm (form D)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H10 : is_list JJ
H11 : perm JJ JJ
H12 : perm LL JJ
H13 : mall (form C :: JJ)
============================
 exists KK LL, adj JJ (form C) KK /\ mall KK /\ adj JJ (form D) LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H7 _ with L = form D :: JJ.
Witness: unfold(perm, 2, exists[A = form D, KK = LL, LL = JJ] split(split(apply H6, unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H12)).
Subgoal 6.1:

Variables: L JJ C D LL J K
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth C D)) L
Hfm1 : is_fm (form C)
Hfm2 : is_fm (form D)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H6 : adj LL (form D) K
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H10 : is_list JJ
H11 : perm JJ JJ
H12 : perm LL JJ
H13 : mall (form C :: JJ)
H14 : mall (form D :: JJ)
============================
 exists KK LL, adj JJ (form C) KK /\ mall KK /\ adj JJ (form D) LL /\ mall LL

Subgoal 6.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form C :: JJ, LL = form D :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H13), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H14).
Subgoal 6.2:

Variables: L JJ A B C D LL J K KK
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H4 : adj LL (form C) J
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H5 : mall J *
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H11 : adj U (form (wth A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H12 : adj U (form A) KK1
H13 : mall KK1
H14 : adj U (form B) LL1
H15 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H12 : adj U (form A) KK1
H13 : mall KK1
H14 : adj U (form B) LL1
H15 : mall LL1
H16 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H12 : adj U (form A) KK1
H13 : mall KK1
H14 : adj U (form B) LL1
H15 : mall LL1
H16 : is_list KK
H17 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H13 _ with L = form C :: form A :: KK.
Witness: unfold(perm, 2, exists[A1 = form A, KK2 = U, LL = form C :: KK] split(split(apply H12, unfold(adj, 2, split(apply Hfm3, unfold(adj, 1, split(apply Hfm1, apply H16))))), unfold(perm, 2, exists[A = form C, KK1 = KK, LL = KK] split(split(apply H10, unfold(adj, 1, split(apply Hfm3, apply H16))), apply H17)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H12 : adj U (form A) KK1
H14 : adj U (form B) LL1
H15 : mall LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (form C :: form A :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H15 _ with L = form C :: form B :: KK.
Witness: unfold(perm, 2, exists[A = form B, KK1 = U, LL = form C :: KK] split(split(apply H14, unfold(adj, 2, split(apply Hfm3, unfold(adj, 1, split(apply Hfm2, apply H16))))), unfold(perm, 2, exists[A = form C, KK1 = KK, LL = KK] split(split(apply H10, unfold(adj, 1, split(apply Hfm3, apply H16))), apply H17)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H6 : adj LL (form D) K
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H12 : adj U (form A) KK1
H14 : adj U (form B) LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (form C :: form A :: KK)
H19 : mall (form C :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
H7 : mall K *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H12 : adj U (form A) KK1
H14 : adj U (form B) LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (form C :: form A :: KK)
H19 : mall (form C :: form B :: KK)
H20 : adj KK (form D) U1
H21 : adj U1 (form (wth A B)) K
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H12 : adj U (form A) KK1
H14 : adj U (form B) LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (form C :: form A :: KK)
H19 : mall (form C :: form B :: KK)
H20 : adj KK (form D) U1
H22 : adj U1 (form A) KK2
H23 : mall KK2
H24 : adj U1 (form B) LL2
H25 : mall LL2
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H23 _ with L = form D :: form A :: KK.
Witness: unfold(perm, 2, exists[A1 = form A, KK1 = U1, LL = form D :: KK] split(split(apply H22, unfold(adj, 2, split(apply Hfm4, unfold(adj, 1, split(apply Hfm1, apply H16))))), unfold(perm, 2, exists[A = form D, KK1 = KK, LL = KK] split(split(apply H20, unfold(adj, 1, split(apply Hfm4, apply H16))), apply H17)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H12 : adj U (form A) KK1
H14 : adj U (form B) LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (form C :: form A :: KK)
H19 : mall (form C :: form B :: KK)
H20 : adj KK (form D) U1
H22 : adj U1 (form A) KK2
H24 : adj U1 (form B) LL2
H25 : mall LL2
H26 : mall (form D :: form A :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H25 _ with L = form D :: form B :: KK.
Witness: unfold(perm, 2, exists[A = form B, KK1 = U1, LL = form D :: KK] split(split(apply H24, unfold(adj, 2, split(apply Hfm4, unfold(adj, 1, split(apply Hfm2, apply H16))))), unfold(perm, 2, exists[A = form D, KK1 = KK, LL = KK] split(split(apply H20, unfold(adj, 1, split(apply Hfm4, apply H16))), apply H17)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H10 : adj KK (form C) U
H12 : adj U (form A) KK1
H14 : adj U (form B) LL1
H16 : is_list KK
H17 : perm KK KK
H18 : mall (form C :: form A :: KK)
H19 : mall (form C :: form B :: KK)
H20 : adj KK (form D) U1
H22 : adj U1 (form A) KK2
H24 : adj U1 (form B) LL2
H26 : mall (form D :: form A :: KK)
H27 : mall (form D :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H16 : is_list KK
H17 : perm KK KK
H18 : mall (form C :: form A :: KK)
H19 : mall (form C :: form B :: KK)
H26 : mall (form D :: form A :: KK)
H27 : mall (form D :: form B :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form A :: form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H16 : is_list KK
H17 : perm KK KK
H18 : mall (form C :: form A :: KK)
H19 : mall (form C :: form B :: KK)
H26 : mall (form D :: form A :: KK)
H27 : mall (form D :: form B :: KK)
H28 : mall (form A :: form (wth C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form B :: form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H16 : is_list KK
H17 : perm KK KK
H18 : mall (form C :: form A :: KK)
H19 : mall (form C :: form B :: KK)
H26 : mall (form D :: form A :: KK)
H27 : mall (form D :: form B :: KK)
H28 : mall (form A :: form (wth C D) :: KK)
H29 : mall (form B :: form (wth C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H16 : is_list KK
H17 : perm KK KK
H28 : mall (form A :: form (wth C D) :: KK)
H29 : mall (form B :: form (wth C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H16 : is_list KK
H17 : perm KK KK
H28 : mall (form A :: form (wth C D) :: KK)
H29 : mall (form B :: form (wth C D) :: KK)
============================
 perm (form (wth C D) :: KK) JJ

Subgoal 6.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H16 : is_list KK
H17 : perm KK KK
H28 : mall (form A :: form (wth C D) :: KK)
H29 : mall (form B :: form (wth C D) :: KK)
H30 : adj KK (form (wth C D)) U2
H31 : adj U2 (form (wth A B)) L
============================
 perm (form (wth C D) :: KK) JJ

Subgoal 6.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H16 : is_list KK
H17 : perm KK KK
H28 : mall (form A :: form (wth C D) :: KK)
H29 : mall (form B :: form (wth C D) :: KK)
H30 : adj KK (form (wth C D)) U2
H32 : perm U2 JJ
============================
 perm (form (wth C D) :: KK) JJ

Subgoal 6.2 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U2.
Witness: unfold(perm, 2, exists[A = form (wth C D), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 7, split(apply Hfm3, apply Hfm4)), apply H16)), apply H30), apply H17)).
Witness: apply H32.
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H16 : is_list KK
H17 : perm KK KK
H28 : mall (form A :: form (wth C D) :: KK)
H29 : mall (form B :: form (wth C D) :: KK)
H30 : perm (form (wth C D) :: KK) JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H28 _ with L = form A :: JJ.
Witness: unfold(perm, 2, exists[A1 = form A, KK1 = form (wth C D) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(unfold(is_fm, 7, split(apply Hfm3, apply Hfm4)), apply H16)))), unfold(adj, 1, split(apply Hfm1, apply HJJ))), apply H30)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H16 : is_list KK
H17 : perm KK KK
H29 : mall (form B :: form (wth C D) :: KK)
H30 : perm (form (wth C D) :: KK) JJ
H31 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H29 _ with L = form B :: JJ.
Witness: unfold(perm, 2, exists[A = form B, KK1 = form (wth C D) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(unfold(is_fm, 7, split(apply Hfm3, apply Hfm4)), apply H16)))), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H30)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (wth C D)) L
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H9 : adj KK (form (wth A B)) LL
H16 : is_list KK
H17 : perm KK KK
H30 : perm (form (wth C D) :: KK) JJ
H31 : mall (form A :: JJ)
H32 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 7 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H31), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H32).
Subgoal 7:

Variables: L JJ A B LL
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form top) L
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form top) L
H4 : form (wth A B) = form top /\ perm JJ LL \/
       (exists KK, adj KK (form (wth A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form top) L
H5 : adj KK (form (wth A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form top) L
H5 : adj KK (form (wth A B)) LL
H6 : adj KK (form top) U
H7 : adj U (form (wth A B)) L
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form top) L
H5 : adj KK (form (wth A B)) LL
H6 : adj KK (form top) U
H8 : perm U JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form top) L
H5 : adj KK (form (wth A B)) LL
H9 : adj KK1 (form top) JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), unfold(mall, 7, exists[LL = form A :: KK1] unfold(adj, 2, split(apply Hfm1, apply H9)))), unfold(adj, 1, split(apply Hfm2, apply HJJ))), unfold(mall, 7, exists[LL = form B :: KK1] unfold(adj, 2, split(apply Hfm2, apply H9)))).
Subgoal 8:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form A1) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C B1)) L
H4 : adj LL (form C) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
H5 : mall J *
Ht : is_fm (form (plus C D))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
H5 : mall J *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
H5 : mall J *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H6 : form (wth A B) = form (plus C D) /\ perm JJ LL \/
       (exists KK, adj KK (form (wth A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
H5 : mall J *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
H5 : mall J *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H9 : adj U (form (wth A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H11 : mall KK1
H12 : adj U (form B) LL1
H13 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H11 : mall KK1
H12 : adj U (form B) LL1
H13 : mall LL1
H14 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H11 : mall KK1
H12 : adj U (form B) LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H11 _ with L = form A :: form C :: KK.
Witness: unfold(perm, 2, exists[A1 = form A, KK2 = U, LL = form C :: KK] split(split(apply H10, unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(apply Hfm3, apply H14))))), unfold(perm, 2, exists[A = form C, KK1 = KK, LL = KK] split(split(apply H8, unfold(adj, 1, split(apply Hfm3, apply H14))), apply H15)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form C :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H13 _ with L = form B :: form C :: KK.
Witness: unfold(perm, 2, exists[A = form B, KK1 = U, LL = form C :: KK] split(split(apply H12, unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(apply Hfm3, apply H14))))), unfold(perm, 2, exists[A = form C, KK1 = KK, LL = KK] split(split(apply H8, unfold(adj, 1, split(apply Hfm3, apply H14))), apply H15)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form C :: KK)
H17 : mall (form B :: form C :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form A :: form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form C :: KK)
H17 : mall (form B :: form C :: KK)
H18 : mall (form A :: form (plus C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (form B :: form C :: KK)
H18 : mall (form A :: form (plus C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form B :: form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (form B :: form C :: KK)
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
============================
 perm (form (plus C D) :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
H20 : adj KK (form (plus C D)) U1
H21 : adj U1 (form (wth A B)) L
============================
 perm (form (plus C D) :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
H20 : adj KK (form (plus C D)) U1
H22 : perm U1 JJ
============================
 perm (form (plus C D) :: KK) JJ

Subgoal 8 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (plus C D), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 9, split(apply Hfm3, apply Hfm4)), apply H14)), apply H20), apply H15)).
Witness: apply H22.
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
H20 : perm (form (plus C D) :: KK) JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H18 _ with L = form A :: JJ.
Witness: unfold(perm, 2, exists[A1 = form A, KK1 = form (plus C D) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(unfold(is_fm, 9, split(apply Hfm3, apply Hfm4)), apply H14)))), unfold(adj, 1, split(apply Hfm1, apply HJJ))), apply H20)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H19 : mall (form B :: form (plus C D) :: KK)
H20 : perm (form (plus C D) :: KK) JJ
H21 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = form B :: JJ.
Witness: unfold(perm, 2, exists[A = form B, KK1 = form (plus C D) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(unfold(is_fm, 9, split(apply Hfm3, apply Hfm4)), apply H14)))), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H20)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form C) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form C) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H20 : perm (form (plus C D) :: KK) JJ
H21 : mall (form A :: JJ)
H22 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H21), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H22).
Subgoal 9:

Variables: L JJ A B A1 B1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus A1 B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C B1)) L
H4 : adj LL (form B1) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
H5 : mall J *
Ht : is_fm (form (plus C D))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
H5 : mall J *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
H5 : mall J *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H6 : form (wth A B) = form (plus C D) /\ perm JJ LL \/
       (exists KK, adj KK (form (wth A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
H5 : mall J *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
H5 : mall J *
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H9 : adj U (form (wth A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H11 : mall KK1
H12 : adj U (form B) LL1
H13 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H11 : mall KK1
H12 : adj U (form B) LL1
H13 : mall LL1
H14 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H11 : mall KK1
H12 : adj U (form B) LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H11 _ with L = form A :: form D :: KK.
Witness: unfold(perm, 2, exists[A1 = form A, KK2 = U, LL = form D :: KK] split(split(apply H10, unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(apply Hfm4, apply H14))))), unfold(perm, 2, exists[A = form D, KK1 = KK, LL = KK] split(split(apply H8, unfold(adj, 1, split(apply Hfm4, apply H14))), apply H15)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form D :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H13 _ with L = form B :: form D :: KK.
Witness: unfold(perm, 2, exists[A = form B, KK1 = U, LL = form D :: KK] split(split(apply H12, unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(apply Hfm4, apply H14))))), unfold(perm, 2, exists[A = form D, KK1 = KK, LL = KK] split(split(apply H8, unfold(adj, 1, split(apply Hfm4, apply H14))), apply H15)))).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form D :: KK)
H17 : mall (form B :: form D :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form A :: form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form D :: KK)
H17 : mall (form B :: form D :: KK)
H18 : mall (form A :: form (plus C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (form B :: form D :: KK)
H18 : mall (form A :: form (plus C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form B :: form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (form B :: form D :: KK)
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form (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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
============================
 perm (form (plus C D) :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
H20 : adj KK (form (plus C D)) U1
H21 : adj U1 (form (wth A B)) L
============================
 perm (form (plus C D) :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form 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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
H20 : adj KK (form (plus C D)) U1
H22 : perm U1 JJ
============================
 perm (form (plus C D) :: KK) JJ

Subgoal 9 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (plus C D), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 9, split(apply Hfm3, apply Hfm4)), apply H14)), apply H20), apply H15)).
Witness: apply H22.
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (plus C D) :: KK)
H19 : mall (form B :: form (plus C D) :: KK)
H20 : perm (form (plus C D) :: KK) JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H18 _ with L = form A :: JJ.
Witness: unfold(perm, 2, exists[A1 = form A, KK1 = form (plus C D) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(unfold(is_fm, 9, split(apply Hfm3, apply Hfm4)), apply H14)))), unfold(adj, 1, split(apply Hfm1, apply HJJ))), apply H20)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H19 : mall (form B :: form (plus C D) :: KK)
H20 : perm (form (plus C D) :: KK) JJ
H21 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = form B :: JJ.
Witness: unfold(perm, 2, exists[A = form B, KK1 = form (plus C D) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(unfold(is_fm, 9, split(apply Hfm3, apply Hfm4)), apply H14)))), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H20)).
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 (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (plus C D)) L
H4 : adj LL (form D) J
Hfm3 : is_fm (form C)
Hfm4 : is_fm (form D)
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form D) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H20 : perm (form (plus C D) :: KK) JJ
H21 : mall (form A :: JJ)
H22 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H21), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H22).
Subgoal 10:

Variables: L JJ A B x A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < rename A1 to C.
Subgoal 10:

Variables: L JJ A B x C LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
H5 : mall J *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < Ht : apply adj_2_is_o to H3.
Subgoal 10:

Variables: L JJ A B x C LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
H5 : mall J *
Ht : is_fm (form (exs C))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < Hfm1 : apply adj_2_is_o to H4.
Subgoal 10:

Variables: L JJ A B x C LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
H5 : mall J *
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 10:

Variables: L JJ A B x C LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
H5 : mall J *
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H6 : form (wth A B) = form (exs C) /\ perm JJ LL \/
       (exists KK, adj KK (form (wth A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < case H6.
Subgoal 10:

Variables: L JJ A B x C LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
H5 : mall J *
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_swap to H7 H4.
Subgoal 10:

Variables: L JJ A B x C LL J KK U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
H5 : mall J *
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H9 : adj U (form (wth A B)) J
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply IH to *H5 *H9.
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H11 : mall KK1
H12 : adj U (form B) LL1
H13 : mall LL1
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_1_is_list to H7.
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H11 : mall KK1
H12 : adj U (form B) LL1
H13 : mall LL1
H14 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply perm_refl to H14.
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H11 : mall KK1
H12 : adj U (form B) LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H11 _ with L = form A :: form (C x) :: KK.
Witness: unfold(perm, 2, exists[A1 = form A, KK2 = U, LL = form (C x) :: KK] split(split(apply H10, unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(apply Hfm3, apply H14))))), unfold(perm, 2, exists[A = form (C x), KK1 = KK, LL = KK] split(split(apply H8, unfold(adj, 1, split(apply Hfm3, apply H14))), apply H15)))).
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H13 : mall LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form (C x) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H13 _ with L = form B :: form (C x) :: KK.
Witness: unfold(perm, 2, exists[A = form B, KK1 = U, LL = form (C x) :: KK] split(split(apply H12, unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(apply Hfm3, apply H14))))), unfold(perm, 2, exists[A = form (C x), KK1 = KK, LL = KK] split(split(apply H8, unfold(adj, 1, split(apply Hfm3, apply H14))), apply H15)))).
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form (C x) :: KK)
H17 : mall (form B :: form (C x) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form A :: form (exs C) :: KK).
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form (C x) :: KK)
H17 : mall (form B :: form (C x) :: KK)
H18 : mall (form A :: form (exs C) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < clear H16.
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (form B :: form (C x) :: KK)
H18 : mall (form A :: form (exs C) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form B :: form (exs C) :: KK).
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H17 : mall (form B :: form (C x) :: KK)
H18 : mall (form A :: form (exs C) :: KK)
H19 : mall (form B :: form (exs C) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < clear H17.
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (exs C) :: KK)
H19 : mall (form B :: form (exs C) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form (exs C) :: KK) JJ.
Subgoal 10.1:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (exs C) :: KK)
H19 : mall (form B :: form (exs C) :: KK)
============================
 perm (form (exs C) :: KK) JJ

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_swap to *H7 *H3.
Subgoal 10.1:

Variables: L JJ A B x C LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (exs C) :: KK)
H19 : mall (form B :: form (exs C) :: KK)
H20 : adj KK (form (exs C)) U1
H21 : adj U1 (form (wth A B)) L
============================
 perm (form (exs C) :: KK) JJ

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_same_result to *H21 *H2.
Subgoal 10.1:

Variables: L JJ A B x C LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (exs C) :: KK)
H19 : mall (form B :: form (exs C) :: KK)
H20 : adj KK (form (exs C)) U1
H22 : perm U1 JJ
============================
 perm (form (exs C) :: KK) JJ

Subgoal 10 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (exs C), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(apply Ht, apply H14)), apply H20), apply H15)).
Witness: apply H22.
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (exs C) :: KK)
H19 : mall (form B :: form (exs C) :: KK)
H20 : perm (form (exs C) :: KK) JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H18 _ with L = form A :: JJ.
Witness: unfold(perm, 2, exists[A1 = form A, KK1 = form (exs C) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(apply Ht, apply H14)))), unfold(adj, 1, split(apply Hfm1, apply HJJ))), apply H20)).
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H19 : mall (form B :: form (exs C) :: KK)
H20 : perm (form (exs C) :: KK) JJ
H21 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = form B :: JJ.
Witness: unfold(perm, 2, exists[A = form B, KK1 = form (exs C) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(apply Ht, apply H14)))), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H20)).
Subgoal 10:

Variables: L JJ A B x C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (exs C)) L
H4 : adj LL (form (C x)) J
Ht : is_fm (form (exs C))
Hfm3 : is_fm (form (C x))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C x)) U
H10 : adj U (form A) KK1
H12 : adj U (form B) LL1
H14 : is_list KK
H15 : perm KK KK
H20 : perm (form (exs C) :: KK) JJ
H21 : mall (form A :: JJ)
H22 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H21), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H22).
Subgoal 11:

Variables: L JJ A B A1 LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < rename A1 to C.
Subgoal 11:

Variables: L JJ A B C LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
H5 : mall (J n1) *
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < Ht : apply adj_2_is_o to H3.
Subgoal 11:

Variables: L JJ A B C LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
H5 : mall (J n1) *
Ht : is_fm (form (all C))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < Hfm1 : apply adj_2_is_o to H4.
Subgoal 11:

Variables: L JJ A B C LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
H5 : mall (J n1) *
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_same_result_diff to H2 H3.
Subgoal 11:

Variables: L JJ A B C LL J
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
H5 : mall (J n1) *
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H6 : form (wth A B) = form (all C) /\ perm JJ LL \/
       (exists KK, adj KK (form (wth A B)) LL)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < case H6.
Subgoal 11:

Variables: L JJ A B C LL J KK
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
H5 : mall (J n1) *
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_swap to H7 H4.
Subgoal 11:

Variables: L JJ A B C LL J KK U
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
H5 : mall (J n1) *
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H9 : adj (U n1) (form (wth A B)) (J n1)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply IH to *H5 *H9.
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H11 : mall (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H13 : mall (LL1 n1)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_1_is_list to H7.
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H11 : mall (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H13 : mall (LL1 n1)
H14 : is_list KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply perm_refl to H14.
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H11 : mall (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H13 : mall (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H11 _ with L = form A :: form (C n1) :: KK.
Witness: unfold(perm, 2, exists[A1 = form A, KK2 = U n1, LL = form (C n1) :: KK] split(split(apply H10, unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(apply Hfm3, apply H14))))), unfold(perm, 2, exists[A = form (C n1), KK1 = KK, LL = KK] split(split(apply H8, unfold(adj, 1, split(apply Hfm3, apply H14))), apply H15)))).
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H13 : mall (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form (C n1) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H13 _ with L = form B :: form (C n1) :: KK.
Witness: unfold(perm, 2, exists[A = form B, KK1 = U n1, LL = form (C n1) :: KK] split(split(apply H12, unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(apply Hfm3, apply H14))))), unfold(perm, 2, exists[A = form (C n1), KK1 = KK, LL = KK] split(split(apply H8, unfold(adj, 1, split(apply Hfm3, apply H14))), apply H15)))).
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form (C n1) :: KK)
H17 : mall (form B :: form (C n1) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form A :: form (all C) :: KK).
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H16 : mall (form A :: form (C n1) :: KK)
H17 : mall (form B :: form (C n1) :: KK)
H18 : mall (form A :: form (all C) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < clear H16.
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H17 : mall (form B :: form (C n1) :: KK)
H18 : mall (form A :: form (all C) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert mall (form B :: form (all C) :: KK).
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H17 : mall (form B :: form (C n1) :: KK)
H18 : mall (form A :: form (all C) :: KK)
H19 : mall (form B :: form (all C) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < clear H17.
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (all C) :: KK)
H19 : mall (form B :: form (all C) :: KK)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < assert perm (form (all C) :: KK) JJ.
Subgoal 11.1:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (all C) :: KK)
H19 : mall (form B :: form (all C) :: KK)
============================
 perm (form (all C) :: KK) JJ

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_swap to *H7 *H3.
Subgoal 11.1:

Variables: L JJ A B C LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (all C) :: KK)
H19 : mall (form B :: form (all C) :: KK)
H20 : adj KK (form (all C)) U1
H21 : adj U1 (form (wth A B)) L
============================
 perm (form (all C) :: KK) JJ

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply adj_same_result to *H21 *H2.
Subgoal 11.1:

Variables: L JJ A B C LL J KK U KK1 LL1 U1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (all C) :: KK)
H19 : mall (form B :: form (all C) :: KK)
H20 : adj KK (form (all C)) U1
H22 : perm U1 JJ
============================
 perm (form (all C) :: KK) JJ

Subgoal 11 is:
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (all C), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(apply Ht, apply H14)), apply H20), apply H15)).
Witness: apply H22.
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H18 : mall (form A :: form (all C) :: KK)
H19 : mall (form B :: form (all C) :: KK)
H20 : perm (form (all C) :: KK) JJ
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H18 _ with L = form A :: JJ.
Witness: unfold(perm, 2, exists[A1 = form A, KK1 = form (all C) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm1, unfold(is_list, 2, split(apply Ht, apply H14)))), unfold(adj, 1, split(apply Hfm1, apply HJJ))), apply H20)).
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H19 : mall (form B :: form (all C) :: KK)
H20 : perm (form (all C) :: KK) JJ
H21 : mall (form A :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < apply mall_perm to *H19 _ with L = form B :: JJ.
Witness: unfold(perm, 2, exists[A = form B, KK1 = form (all C) :: KK, LL = JJ] split(split(unfold(adj, 1, split(apply Hfm2, unfold(is_list, 2, split(apply Ht, apply H14)))), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H20)).
Subgoal 11:

Variables: L JJ A B C LL J KK U KK1 LL1
IH : forall L JJ A B, mall L * -> adj JJ (form (wth A B)) L ->
       (exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\
            mall LL)
H2 : adj JJ (form (wth A B)) L
Hfm1 : is_fm (form A)
Hfm2 : is_fm (form B)
HJJ : is_list JJ
H3 : adj LL (form (all C)) L
H4 : adj LL (form (C n1)) (J n1)
Ht : is_fm (form (all C))
Hfm3 : is_fm (form (C n1))
H7 : adj KK (form (wth A B)) LL
H8 : adj KK (form (C n1)) (U n1)
H10 : adj (U n1) (form A) (KK1 n1)
H12 : adj (U n1) (form B) (LL1 n1)
H14 : is_list KK
H15 : perm KK KK
H20 : perm (form (all C) :: KK) JJ
H21 : mall (form A :: JJ)
H22 : mall (form B :: JJ)
============================
 exists KK LL, adj JJ (form A) KK /\ mall KK /\ adj JJ (form B) LL /\ mall LL

wth_inv < search.
Witness: exists[KK = form A :: JJ, LL = form B :: JJ] split(split(split(unfold(adj, 1, split(apply Hfm1, apply HJJ)), apply H21), unfold(adj, 1, split(apply Hfm2, apply HJJ))), apply H22).
Proof completed.
Abella < Theorem all_inv : 
forall L JJ A, mall L -> adj JJ (form (all A)) L ->
  (nabla x, exists J, adj JJ (form (A x)) J /\ mall J).


============================
 forall L JJ A, mall L -> adj JJ (form (all A)) L ->
   (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)

all_inv < induction on 1.

IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
============================
 forall L JJ A, mall L @ -> adj JJ (form (all A)) L ->
   (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)

all_inv < intros.

Variables: L JJ A
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H1 : mall L @
H2 : adj JJ (form (all A)) L
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H1.
Subgoal 1:

Variables: L JJ A A1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 1:

Variables: L JJ A A1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
H4 : form (all A) = form (atom A1) /\ perm JJ (form (natom A1) :: nil) \/
       (exists KK, adj KK (form (all A)) (form (natom A1) :: nil))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H4.
Subgoal 1:

Variables: L JJ A A1 KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
H5 : adj KK (form (all A)) (form (natom A1) :: nil)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H5.
Subgoal 1:

Variables: L JJ A A1 K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj (form (natom A1) :: nil) (form (atom A1)) L
H6 : is_fm (form (natom A1))
H7 : adj K (form (all A)) nil
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H7.
Subgoal 2:

Variables: L JJ A A1 B LL JJ1 KK J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 2:

Variables: L JJ A A1 B LL JJ1 KK J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H9 : form (all A) = form (tens A1 B) /\ perm JJ LL \/
       (exists KK, adj KK (form (all A)) LL)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H9.
Subgoal 2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply merge_unadj_3 to H4 H10.
Subgoal 2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H11 : (exists JJ, adj JJ (form (all A)) JJ1 /\ merge JJ KK KK1) \/
        (exists KK2, adj KK2 (form (all A)) KK /\ merge JJ1 KK2 KK1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H11.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H12 H5.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H6 H15.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H14 H16.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H10.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H16.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert merge (U1 n1) KK (form (A n1) :: KK1).
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge (U1 n1) KK (form (A n1) :: KK1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H3.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge (U1 n1) KK (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert mall (form (tens A1 B) :: form (A n1) :: KK1).
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge (U1 n1) KK (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H10 H3.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1 U2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge (U1 n1) KK (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H26 H2.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1 U2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge (U1 n1) KK (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_perm_full to H27 H25.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1 U2 KK2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge (U1 n1) KK (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
H28 : adj KK2 (form (tens A1 B)) JJ
H29 : perm KK1 KK2
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1 U2 KK2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge (U1 n1) KK (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
H28 : adj KK2 (form (tens A1 B)) JJ
H29 : perm KK1 KK2
H30 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form (tens A1 B) :: form (A n1) :: KK1) (form (A n1) :: JJ).
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1 U2 KK2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge (U1 n1) KK (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
H28 : adj KK2 (form (tens A1 B)) JJ
H29 : perm KK1 KK2
H30 : is_list JJ
H31 : perm (form (tens A1 B) :: form (A n1) :: KK1) (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H24 H31.
Subgoal 2.1:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 JJ2 U J1 U1 U2 KK2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj JJ2 (form (all A)) JJ1
H13 : merge JJ2 KK KK1
H14 : adj JJ2 (form A1) U
H15 : adj U (form (all A)) J
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj JJ2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form A1) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge (U1 n1) KK (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
H28 : adj KK2 (form (tens A1 B)) JJ
H29 : perm KK1 KK2
H30 : is_list JJ
H31 : perm (form (tens A1 B) :: form (A n1) :: KK1) (form (A n1) :: JJ)
H32 : mall (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 2.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H21, apply H30)), apply H32).
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H12 H7.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H8 H15.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H14 H16.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H10.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H16.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert merge JJ1 (U1 n1) (form (A n1) :: KK1).
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge JJ1 (U1 n1) (form (A n1) :: KK1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H3.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge JJ1 (U1 n1) (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert mall (form (tens A1 B) :: form (A n1) :: KK1).
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge JJ1 (U1 n1) (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H10 H3.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1 U2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge JJ1 (U1 n1) (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H26 H2.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1 U2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge JJ1 (U1 n1) (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_perm_full to H27 H25.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1 U2 KK3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge JJ1 (U1 n1) (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
H28 : adj KK3 (form (tens A1 B)) JJ
H29 : perm KK1 KK3
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1 U2 KK3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge JJ1 (U1 n1) (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
H28 : adj KK3 (form (tens A1 B)) JJ
H29 : perm KK1 KK3
H30 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form (tens A1 B) :: form (A n1) :: KK1) (form (A n1) :: JJ).
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1 U2 KK3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge JJ1 (U1 n1) (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
H28 : adj KK3 (form (tens A1 B)) JJ
H29 : perm KK1 KK3
H30 : is_list JJ
H31 : perm (form (tens A1 B) :: form (A n1) :: KK1) (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H24 H31.
Subgoal 2.2:

Variables: L JJ A A1 B LL JJ1 KK J K KK1 KK2 U J1 U1 U2 KK3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (tens A1 B)) L
H4 : merge JJ1 KK LL
H5 : adj JJ1 (form A1) J
H6 : mall J *
H7 : adj KK (form B) K
H8 : mall K *
H10 : adj KK1 (form (all A)) LL
H12 : adj KK2 (form (all A)) KK
H13 : merge JJ1 KK2 KK1
H14 : adj KK2 (form B) U
H15 : adj U (form (all A)) K
H16 : adj U (form (A n1)) (J1 n1)
H17 : mall (J1 n1)
H18 : adj KK2 (form (A n1)) (U1 n1)
H19 : adj (U1 n1) (form B) (J1 n1)
H20 : is_list KK1
H21 : is_fm (form (A n1))
H22 : merge JJ1 (U1 n1) (form (A n1) :: KK1)
H23 : is_fm (form (tens A1 B))
H24 : mall (form (tens A1 B) :: form (A n1) :: KK1)
H25 : adj KK1 (form (tens A1 B)) U2
H26 : adj U2 (form (all A)) L
H27 : perm U2 JJ
H28 : adj KK3 (form (tens A1 B)) JJ
H29 : perm KK1 KK3
H30 : is_list JJ
H31 : perm (form (tens A1 B) :: form (A n1) :: KK1) (form (A n1) :: JJ)
H32 : mall (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 3 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H21, apply H30)), apply H32).
Subgoal 3:

Variables: JJ A
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) (form one :: nil)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H2.
Subgoal 3:

Variables: A K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H3 : is_fm (form one)
H4 : adj K (form (all A)) nil
============================
 exists J, adj (form one :: K) (form (A n1)) J /\ mall J

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H4.
Subgoal 4:

Variables: L JJ A A1 B LL J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 4:

Variables: L JJ A A1 B LL J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H7 : form (all A) = form (par A1 B) /\ perm JJ LL \/
       (exists KK, adj KK (form (all A)) LL)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H7.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H8 H4.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H10 H5.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H6 H12.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H11 H13.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H9 H15.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H18.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H3.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert mall (form (par A1 B) :: U3 n1).
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H13.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form (par A1 B) :: U3 n1) (form (A n1) :: JJ).
Subgoal 4.1:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
============================
 perm (form (par A1 B) :: U3 n1) (form (A n1) :: JJ)

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < unfold.
Subgoal 4.1:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
============================
 exists A2 KK LL, adj KK A2 (form (par A1 B) :: U3 n1) /\
   adj LL A2 (form (A n1) :: JJ) /\ perm KK LL

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (A n1).
Subgoal 4.1:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
============================
 exists KK LL, adj KK (form (A n1)) (form (par A1 B) :: U3 n1) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\ perm KK LL

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (par A1 B) :: KK.
Subgoal 4.1:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
============================
 exists LL, adj (form (par A1 B) :: KK) (form (A n1))
              (form (par A1 B) :: U3 n1) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\
   perm (form (par A1 B) :: KK) LL

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness JJ.
Subgoal 4.1:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
============================
 adj (form (par A1 B) :: KK) (form (A n1)) (form (par A1 B) :: U3 n1) /\
   adj JJ (form (A n1)) (form (A n1) :: JJ) /\
   perm (form (par A1 B) :: KK) JJ

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < split.
Subgoal 4.1.1:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
============================
 adj (form (par A1 B) :: KK) (form (A n1)) (form (par A1 B) :: U3 n1)

Subgoal 4.1.2 is:
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 4.1.3 is:
 perm (form (par A1 B) :: KK) JJ

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 2, split(apply H20, apply H17)).
Subgoal 4.1.2:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
============================
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 4.1.3 is:
 perm (form (par A1 B) :: KK) JJ

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 1, split(apply H23, apply H22)).
Subgoal 4.1.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
============================
 perm (form (par A1 B) :: KK) JJ

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H8 H3.
Subgoal 4.1.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
============================
 perm (form (par A1 B) :: KK) JJ

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H25 H2.
Subgoal 4.1.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
============================
 perm (form (par A1 B) :: KK) JJ

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < backchain perm_trans with K = U4.
Witness: apply H26.
Subgoal 4.1.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
============================
 perm (form (par A1 B) :: KK) U4

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H24.
Subgoal 4.1.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
H27 : is_list KK
============================
 perm (form (par A1 B) :: KK) U4

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < unfold.
Subgoal 4.1.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
H27 : is_list KK
============================
 exists A KK1 LL, adj KK1 A (form (par A1 B) :: KK) /\ adj LL A U4 /\
   perm KK1 LL

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (par A1 B).
Subgoal 4.1.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
H27 : is_list KK
============================
 exists KK1 LL, adj KK1 (form (par A1 B)) (form (par A1 B) :: KK) /\
   adj LL (form (par A1 B)) U4 /\ perm KK1 LL

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness KK.
Subgoal 4.1.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
H27 : is_list KK
============================
 exists LL, adj KK (form (par A1 B)) (form (par A1 B) :: KK) /\
   adj LL (form (par A1 B)) U4 /\ perm KK LL

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness KK.
Subgoal 4.1.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
H27 : is_list KK
============================
 adj KK (form (par A1 B)) (form (par A1 B) :: KK) /\
   adj KK (form (par A1 B)) U4 /\ perm KK KK

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < split.
Subgoal 4.1.3.1:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
H27 : is_list KK
============================
 adj KK (form (par A1 B)) (form (par A1 B) :: KK)

Subgoal 4.1.3.2 is:
 adj KK (form (par A1 B)) U4

Subgoal 4.1.3.3 is:
 perm KK KK

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 1, split(apply H20, apply H27)).
Subgoal 4.1.3.2:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
H27 : is_list KK
============================
 adj KK (form (par A1 B)) U4

Subgoal 4.1.3.3 is:
 perm KK KK

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: apply H24.
Subgoal 4.1.3.3:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3 U4
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : adj KK (form (par A1 B)) U4
H25 : adj U4 (form (all A)) L
H26 : perm U4 JJ
H27 : is_list KK
============================
 perm KK KK

Subgoal 4 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < backchain perm_refl.
Witness: apply H27.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : perm (form (par A1 B) :: U3 n1) (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H21 H24.
Subgoal 4:

Variables: L JJ A A1 B LL J K KK U U1 J1 U2 U3
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (par A1 B)) L
H4 : adj LL (form A1) J
H5 : adj J (form B) K
H6 : mall K *
H8 : adj KK (form (all A)) LL
H9 : adj KK (form A1) U
H10 : adj U (form (all A)) J
H11 : adj U (form B) U1
H12 : adj U1 (form (all A)) K
H13 : adj U1 (form (A n1)) (J1 n1)
H14 : mall (J1 n1)
H15 : adj U (form (A n1)) (U2 n1)
H16 : adj (U2 n1) (form B) (J1 n1)
H17 : adj KK (form (A n1)) (U3 n1)
H18 : adj (U3 n1) (form A1) (U2 n1)
H19 : is_list (U3 n1)
H20 : is_fm (form (par A1 B))
H21 : mall (form (par A1 B) :: U3 n1)
H22 : is_list JJ
H23 : is_fm (form (A n1))
H24 : perm (form (par A1 B) :: U3 n1) (form (A n1) :: JJ)
H25 : mall (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H23, apply H22)), apply H25).
Subgoal 5:

Variables: L JJ A LL
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 5:

Variables: L JJ A LL
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H5 : form (all A) = form bot /\ perm JJ LL \/
       (exists KK, adj KK (form (all A)) LL)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H2.
Subgoal 5:

Variables: L JJ A LL
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H5 : form (all A) = form bot /\ perm JJ LL \/
       (exists KK, adj KK (form (all A)) LL)
H6 : is_fm (form (all A))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H6.
Subgoal 5:

Variables: L JJ A LL
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H5 : form (all A) = form bot /\ perm JJ LL \/
       (exists KK, adj KK (form (all A)) LL)
H7 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H5.
Subgoal 5:

Variables: L JJ A LL KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H4 H8.
Subgoal 5:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_3_is_list to H9.
Subgoal 5:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert mall (form bot :: J n1).
Subgoal 5:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 5:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form bot :: J n1) (form (A n1) :: JJ).
Subgoal 5.1:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
============================
 perm (form bot :: J n1) (form (A n1) :: JJ)

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < unfold.
Subgoal 5.1:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
============================
 exists A1 KK LL, adj KK A1 (form bot :: J n1) /\
   adj LL A1 (form (A n1) :: JJ) /\ perm KK LL

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (A n1).
Subgoal 5.1:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
============================
 exists KK LL, adj KK (form (A n1)) (form bot :: J n1) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\ perm KK LL

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form bot :: KK.
Subgoal 5.1:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
============================
 exists LL, adj (form bot :: KK) (form (A n1)) (form bot :: J n1) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\ perm (form bot :: KK) LL

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness JJ.
Subgoal 5.1:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
============================
 adj (form bot :: KK) (form (A n1)) (form bot :: J n1) /\
   adj JJ (form (A n1)) (form (A n1) :: JJ) /\ perm (form bot :: KK) JJ

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < split.
Subgoal 5.1.1:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
============================
 adj (form bot :: KK) (form (A n1)) (form bot :: J n1)

Subgoal 5.1.2 is:
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 5.1.3 is:
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 6, true), apply H9)).
Subgoal 5.1.2:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
============================
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 5.1.3 is:
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 1, split(apply H7, apply H13)).
Subgoal 5.1.3:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
============================
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H8 H3.
Subgoal 5.1.3:

Variables: L JJ A LL KK J U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
H14 : adj KK (form bot) U
H15 : adj U (form (all A)) L
============================
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H15 H2.
Subgoal 5.1.3:

Variables: L JJ A LL KK J U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
H14 : adj KK (form bot) U
H15 : adj U (form (all A)) L
H16 : perm U JJ
============================
 perm (form bot :: KK) JJ

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < backchain perm_trans with K = U.
Witness: apply H16.
Subgoal 5.1.3:

Variables: L JJ A LL KK J U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
H14 : adj KK (form bot) U
H15 : adj U (form (all A)) L
H16 : perm U JJ
============================
 perm (form bot :: KK) U

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H14.
Subgoal 5.1.3:

Variables: L JJ A LL KK J U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
H14 : adj KK (form bot) U
H15 : adj U (form (all A)) L
H16 : perm U JJ
H17 : is_list KK
============================
 perm (form bot :: KK) U

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply perm_refl to H17.
Subgoal 5.1.3:

Variables: L JJ A LL KK J U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
H14 : adj KK (form bot) U
H15 : adj U (form (all A)) L
H16 : perm U JJ
H17 : is_list KK
H18 : perm KK KK
============================
 perm (form bot :: KK) U

Subgoal 5 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(perm, 2, exists[A = form bot, KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 6, true), apply H17)), apply H14), apply H18)).
Subgoal 5:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
H14 : perm (form bot :: J n1) (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H12 H14.
Subgoal 5:

Variables: L JJ A LL KK J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form bot) L
H4 : mall LL *
H7 : is_fm (form (A n1))
H8 : adj KK (form (all A)) LL
H9 : adj KK (form (A n1)) (J n1)
H10 : mall (J n1)
H11 : is_list (J n1)
H12 : mall (form bot :: J n1)
H13 : is_list JJ
H14 : perm (form bot :: J n1) (form (A n1) :: JJ)
H15 : mall (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H7, apply H13)), apply H15).
Subgoal 6:

Variables: L JJ A A1 B LL J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < Ht : apply adj_2_is_o to H2.
Subgoal 6:

Variables: L JJ A A1 B LL J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
Ht : is_fm (form (all A))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case Ht.
Subgoal 6:

Variables: L JJ A A1 B LL J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < Ht : apply adj_2_is_o to H3.
Subgoal 6:

Variables: L JJ A A1 B LL J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
Ht : is_fm (form (wth A1 B))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case Ht.
Subgoal 6:

Variables: L JJ A A1 B LL J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 6:

Variables: L JJ A A1 B LL J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 6:

Variables: L JJ A A1 B LL J K
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H12 : form (all A) = form (wth A1 B) /\ perm JJ LL \/
        (exists KK, adj KK (form (all A)) LL)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H12.
Subgoal 6:

Variables: L JJ A A1 B LL J K KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H13.
Subgoal 6:

Variables: L JJ A A1 B LL J K KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H13 H4.
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H5 H16.
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H13 H6.
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H7 H20.
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply perm_refl to H14.
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H18 _ with L = form A1 :: form (A n1) :: KK.
Witness: unfold(perm, 2, exists[A2 = form (A n1), KK1 = U, LL = form A1 :: KK] split(split(apply H17, unfold(adj, 2, split(apply H9, unfold(adj, 1, split(apply H8, apply H14))))), unfold(perm, 2, exists[A = form A1, KK1 = KK, LL = KK] split(split(apply H15, unfold(adj, 1, split(apply H9, apply H14))), apply H23)))).
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H22 _ with L = form B :: form (A n1) :: KK.
Witness: unfold(perm, 2, exists[A1 = form (A n1), KK1 = U1, LL = form B :: KK] split(split(apply H21, unfold(adj, 2, split(apply H10, unfold(adj, 1, split(apply H8, apply H14))))), unfold(perm, 2, exists[A = form B, KK1 = KK, LL = KK] split(split(apply H19, unfold(adj, 1, split(apply H10, apply H14))), apply H23)))).
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert mall (form (wth A1 B) :: form (A n1) :: KK).
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form (wth A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ).
Subgoal 6.1:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
============================
 perm (form (wth A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ)

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < unfold.
Subgoal 6.1:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (wth A1 B) :: form (A n1) :: KK) /\
   adj LL A2 (form (A n1) :: JJ) /\ perm KK1 LL

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (A n1).
Subgoal 6.1:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
============================
 exists KK1 LL, adj KK1 (form (A n1)) (form (wth A1 B) :: form (A n1) :: KK) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\ perm KK1 LL

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (wth A1 B) :: KK.
Subgoal 6.1:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
============================
 exists LL, adj (form (wth A1 B) :: KK) (form (A n1))
              (form (wth A1 B) :: form (A n1) :: KK) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\
   perm (form (wth A1 B) :: KK) LL

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness JJ.
Subgoal 6.1:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
============================
 adj (form (wth A1 B) :: KK) (form (A n1))
   (form (wth A1 B) :: form (A n1) :: KK) /\
   adj JJ (form (A n1)) (form (A n1) :: JJ) /\
   perm (form (wth A1 B) :: KK) JJ

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < split.
Subgoal 6.1.1:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
============================
 adj (form (wth A1 B) :: KK) (form (A n1))
   (form (wth A1 B) :: form (A n1) :: KK)

Subgoal 6.1.2 is:
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 6.1.3 is:
 perm (form (wth A1 B) :: KK) JJ

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 7, split(apply H9, apply H10)), unfold(adj, 1, split(apply H8, apply H14)))).
Subgoal 6.1.2:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
============================
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 6.1.3 is:
 perm (form (wth A1 B) :: KK) JJ

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 1, split(apply H8, apply H11)).
Subgoal 6.1.3:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
============================
 perm (form (wth A1 B) :: KK) JJ

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H13 H3.
Subgoal 6.1.3:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2 U2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
H27 : adj KK (form (wth A1 B)) U2
H28 : adj U2 (form (all A)) L
============================
 perm (form (wth A1 B) :: KK) JJ

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H28 H2.
Subgoal 6.1.3:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2 U2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
H27 : adj KK (form (wth A1 B)) U2
H28 : adj U2 (form (all A)) L
H29 : perm U2 JJ
============================
 perm (form (wth A1 B) :: KK) JJ

Subgoal 6 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < backchain perm_trans with K = U2.
Witness: unfold(perm, 2, exists[A = form (wth A1 B), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 7, split(apply H9, apply H10)), apply H14)), apply H27), apply H23)).
Witness: apply H29.
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
H27 : perm (form (wth A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H26 H27.
Subgoal 6:

Variables: L JJ A A1 B LL J K KK U J1 U1 J2
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (wth A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : adj LL (form B) K
H7 : mall K *
H8 : is_fm (form (A n1))
H9 : is_fm (form A1)
H10 : is_fm (form B)
H11 : is_list JJ
H13 : adj KK (form (all A)) LL
H14 : is_list KK
H15 : adj KK (form A1) U
H16 : adj U (form (all A)) J
H17 : adj U (form (A n1)) (J1 n1)
H18 : mall (J1 n1)
H19 : adj KK (form B) U1
H20 : adj U1 (form (all A)) K
H21 : adj U1 (form (A n1)) (J2 n1)
H22 : mall (J2 n1)
H23 : perm KK KK
H24 : mall (form A1 :: form (A n1) :: KK)
H25 : mall (form B :: form (A n1) :: KK)
H26 : mall (form (wth A1 B) :: form (A n1) :: KK)
H27 : perm (form (wth A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ)
H28 : mall (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 7 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H8, apply H11)), apply H28).
Subgoal 7:

Variables: L JJ A LL
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < Ht : apply adj_2_is_o to H2.
Subgoal 7:

Variables: L JJ A LL
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
Ht : is_fm (form (all A))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case Ht.
Subgoal 7:

Variables: L JJ A LL
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 7:

Variables: L JJ A LL
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 7:

Variables: L JJ A LL
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
H6 : form (all A) = form top /\ perm JJ LL \/
       (exists KK, adj KK (form (all A)) LL)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H6.
Subgoal 7:

Variables: L JJ A LL KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
H7 : adj KK (form (all A)) LL
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H7 H3.
Subgoal 7:

Variables: L JJ A LL KK U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
H7 : adj KK (form (all A)) LL
H8 : adj KK (form top) U
H9 : adj U (form (all A)) L
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H9 H2.
Subgoal 7:

Variables: L JJ A LL KK U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
H7 : adj KK (form (all A)) LL
H8 : adj KK (form top) U
H9 : adj U (form (all A)) L
H10 : perm U JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_perm to H10 H8.
Subgoal 7:

Variables: L JJ A LL KK U KK1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
H7 : adj KK (form (all A)) LL
H8 : adj KK (form top) U
H9 : adj U (form (all A)) L
H10 : perm U JJ
H11 : adj KK1 (form top) JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H11.
Subgoal 7:

Variables: L JJ A LL KK U KK1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
H7 : adj KK (form (all A)) LL
H8 : adj KK (form top) U
H9 : adj U (form (all A)) L
H10 : perm U JJ
H11 : adj KK1 (form top) JJ
H12 : is_list KK1
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply perm_refl to H12.
Subgoal 7:

Variables: L JJ A LL KK U KK1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
H7 : adj KK (form (all A)) LL
H8 : adj KK (form top) U
H9 : adj U (form (all A)) L
H10 : perm U JJ
H11 : adj KK1 (form top) JJ
H12 : is_list KK1
H13 : perm KK1 KK1
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form top :: form (A n1) :: KK1) (form (A n1) :: JJ).
Subgoal 7:

Variables: L JJ A LL KK U KK1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
H7 : adj KK (form (all A)) LL
H8 : adj KK (form top) U
H9 : adj U (form (all A)) L
H10 : perm U JJ
H11 : adj KK1 (form top) JJ
H12 : is_list KK1
H13 : perm KK1 KK1
H14 : perm (form top :: form (A n1) :: KK1) (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to _ H14.
Witness: unfold(mall, 7, exists[LL = form (A n1) :: KK1] unfold(adj, 1, split(unfold(is_fm, 8, true), unfold(is_list, 2, split(apply H4, apply H12))))).
Subgoal 7:

Variables: L JJ A LL KK U KK1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form top) L
H4 : is_fm (form (A n1))
H5 : is_list JJ
H7 : adj KK (form (all A)) LL
H8 : adj KK (form top) U
H9 : adj U (form (all A)) L
H10 : perm U JJ
H11 : adj KK1 (form top) JJ
H12 : is_list KK1
H13 : perm KK1 KK1
H14 : perm (form top :: form (A n1) :: KK1) (form (A n1) :: JJ)
H15 : mall (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H4, apply H5)), apply H15).
Subgoal 8:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < Ht : apply adj_2_is_o to H2.
Subgoal 8:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
Ht : is_fm (form (all A))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case Ht.
Subgoal 8:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < Ht : apply adj_2_is_o to H3.
Subgoal 8:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
Ht : is_fm (form (plus A1 B))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case Ht.
Subgoal 8:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 8:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 8:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H10 : form (all A) = form (plus A1 B) /\ perm JJ LL \/
        (exists KK, adj KK (form (all A)) LL)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H10.
Subgoal 8:

Variables: L JJ A A1 B LL J KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H11.
Subgoal 8:

Variables: L JJ A A1 B LL J KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H11 H4.
Subgoal 8:

Variables: L JJ A A1 B LL J KK U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H5 H14.
Subgoal 8:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply perm_refl to H12.
Subgoal 8:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H16 _ with L = form A1 :: form (A n1) :: KK.
Witness: unfold(perm, 2, exists[A2 = form (A n1), KK1 = U, LL = form A1 :: KK] split(split(apply H15, unfold(adj, 2, split(apply H7, unfold(adj, 1, split(apply H6, apply H12))))), unfold(perm, 2, exists[A = form A1, KK1 = KK, LL = KK] split(split(apply H13, unfold(adj, 1, split(apply H7, apply H12))), apply H17)))).
Subgoal 8:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert mall (form (plus A1 B) :: form (A n1) :: KK).
Subgoal 8:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form (plus A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ).
Subgoal 8.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 perm (form (plus A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ)

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < unfold.
Subgoal 8.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (plus A1 B) :: form (A n1) :: KK) /\
   adj LL A2 (form (A n1) :: JJ) /\ perm KK1 LL

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (A n1).
Subgoal 8.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 exists KK1 LL, adj KK1 (form (A n1)) (form (plus A1 B) :: form (A n1) :: KK) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\ perm KK1 LL

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (plus A1 B) :: KK.
Subgoal 8.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 exists LL, adj (form (plus A1 B) :: KK) (form (A n1))
              (form (plus A1 B) :: form (A n1) :: KK) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\
   perm (form (plus A1 B) :: KK) LL

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness JJ.
Subgoal 8.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 adj (form (plus A1 B) :: KK) (form (A n1))
   (form (plus A1 B) :: form (A n1) :: KK) /\
   adj JJ (form (A n1)) (form (A n1) :: JJ) /\
   perm (form (plus A1 B) :: KK) JJ

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < split.
Subgoal 8.1.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 adj (form (plus A1 B) :: KK) (form (A n1))
   (form (plus A1 B) :: form (A n1) :: KK)

Subgoal 8.1.2 is:
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 8.1.3 is:
 perm (form (plus A1 B) :: KK) JJ

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 9, split(apply H7, apply H8)), unfold(adj, 1, split(apply H6, apply H12)))).
Subgoal 8.1.2:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 8.1.3 is:
 perm (form (plus A1 B) :: KK) JJ

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 1, split(apply H6, apply H9)).
Subgoal 8.1.3:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 perm (form (plus A1 B) :: KK) JJ

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H11 H3.
Subgoal 8.1.3:

Variables: L JJ A A1 B LL J KK U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
H20 : adj KK (form (plus A1 B)) U1
H21 : adj U1 (form (all A)) L
============================
 perm (form (plus A1 B) :: KK) JJ

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H21 H2.
Subgoal 8.1.3:

Variables: L JJ A A1 B LL J KK U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
H20 : adj KK (form (plus A1 B)) U1
H21 : adj U1 (form (all A)) L
H22 : perm U1 JJ
============================
 perm (form (plus A1 B) :: KK) JJ

Subgoal 8 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (plus A1 B), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 9, split(apply H7, apply H8)), apply H12)), apply H20), apply H17)).
Witness: apply H22.
Subgoal 8:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
H20 : perm (form (plus A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H19 H20.
Subgoal 8:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form A1) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form A1) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form A1 :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
H20 : perm (form (plus A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ)
H21 : mall (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H6, apply H9)), apply H21).
Subgoal 9:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < Ht : apply adj_2_is_o to H2.
Subgoal 9:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
Ht : is_fm (form (all A))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case Ht.
Subgoal 9:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < Ht : apply adj_2_is_o to H3.
Subgoal 9:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
Ht : is_fm (form (plus A1 B))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case Ht.
Subgoal 9:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 9:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 9:

Variables: L JJ A A1 B LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H10 : form (all A) = form (plus A1 B) /\ perm JJ LL \/
        (exists KK, adj KK (form (all A)) LL)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H10.
Subgoal 9:

Variables: L JJ A A1 B LL J KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H11.
Subgoal 9:

Variables: L JJ A A1 B LL J KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H11 H4.
Subgoal 9:

Variables: L JJ A A1 B LL J KK U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H5 H14.
Subgoal 9:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply perm_refl to H12.
Subgoal 9:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H16 _ with L = form B :: form (A n1) :: KK.
Witness: unfold(perm, 2, exists[A1 = form (A n1), KK1 = U, LL = form B :: KK] split(split(apply H15, unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H6, apply H12))))), unfold(perm, 2, exists[A = form B, KK1 = KK, LL = KK] split(split(apply H13, unfold(adj, 1, split(apply H8, apply H12))), apply H17)))).
Subgoal 9:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert mall (form (plus A1 B) :: form (A n1) :: KK).
Subgoal 9:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form (plus A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ).
Subgoal 9.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 perm (form (plus A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ)

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < unfold.
Subgoal 9.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (plus A1 B) :: form (A n1) :: KK) /\
   adj LL A2 (form (A n1) :: JJ) /\ perm KK1 LL

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (A n1).
Subgoal 9.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 exists KK1 LL, adj KK1 (form (A n1)) (form (plus A1 B) :: form (A n1) :: KK) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\ perm KK1 LL

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (plus A1 B) :: KK.
Subgoal 9.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 exists LL, adj (form (plus A1 B) :: KK) (form (A n1))
              (form (plus A1 B) :: form (A n1) :: KK) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\
   perm (form (plus A1 B) :: KK) LL

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness JJ.
Subgoal 9.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 adj (form (plus A1 B) :: KK) (form (A n1))
   (form (plus A1 B) :: form (A n1) :: KK) /\
   adj JJ (form (A n1)) (form (A n1) :: JJ) /\
   perm (form (plus A1 B) :: KK) JJ

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < split.
Subgoal 9.1.1:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 adj (form (plus A1 B) :: KK) (form (A n1))
   (form (plus A1 B) :: form (A n1) :: KK)

Subgoal 9.1.2 is:
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 9.1.3 is:
 perm (form (plus A1 B) :: KK) JJ

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 2, split(unfold(is_fm, 9, split(apply H7, apply H8)), unfold(adj, 1, split(apply H6, apply H12)))).
Subgoal 9.1.2:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 9.1.3 is:
 perm (form (plus A1 B) :: KK) JJ

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 1, split(apply H6, apply H9)).
Subgoal 9.1.3:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
============================
 perm (form (plus A1 B) :: KK) JJ

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H11 H3.
Subgoal 9.1.3:

Variables: L JJ A A1 B LL J KK U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
H20 : adj KK (form (plus A1 B)) U1
H21 : adj U1 (form (all A)) L
============================
 perm (form (plus A1 B) :: KK) JJ

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H21 H2.
Subgoal 9.1.3:

Variables: L JJ A A1 B LL J KK U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
H20 : adj KK (form (plus A1 B)) U1
H21 : adj U1 (form (all A)) L
H22 : perm U1 JJ
============================
 perm (form (plus A1 B) :: KK) JJ

Subgoal 9 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (plus A1 B), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(unfold(is_fm, 9, split(apply H7, apply H8)), apply H12)), apply H20), apply H17)).
Witness: apply H22.
Subgoal 9:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
H20 : perm (form (plus A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H19 H20.
Subgoal 9:

Variables: L JJ A A1 B LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (plus A1 B)) L
H4 : adj LL (form B) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form A1)
H8 : is_fm (form B)
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form B) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form B :: form (A n1) :: KK)
H19 : mall (form (plus A1 B) :: form (A n1) :: KK)
H20 : perm (form (plus A1 B) :: form (A n1) :: KK) (form (A n1) :: JJ)
H21 : mall (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H6, apply H9)), apply H21).
Subgoal 10:

Variables: L JJ A x A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < Ht : apply adj_2_is_o to H2.
Subgoal 10:

Variables: L JJ A x A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
Ht : is_fm (form (all A))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case Ht.
Subgoal 10:

Variables: L JJ A x A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H3.
Subgoal 10:

Variables: L JJ A x A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H4.
Subgoal 10:

Variables: L JJ A x A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 10:

Variables: L JJ A x A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 10:

Variables: L JJ A x A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H10 : form (all A) = form (exs A1) /\ perm JJ LL \/
        (exists KK, adj KK (form (all A)) LL)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H10.
Subgoal 10:

Variables: L JJ A x A1 LL J KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H11.
Subgoal 10:

Variables: L JJ A x A1 LL J KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H11 H4.
Subgoal 10:

Variables: L JJ A x A1 LL J KK U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H5 H14.
Subgoal 10:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply perm_refl to H12.
Subgoal 10:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H16 _ with L = form (A1 x) :: form (A n1) :: KK.
Witness: unfold(perm, 2, exists[A2 = form (A n1), KK1 = U, LL = form (A1 x) :: KK] split(split(apply H15, unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H6, apply H12))))), unfold(perm, 2, exists[A = form (A1 x), KK1 = KK, LL = KK] split(split(apply H13, unfold(adj, 1, split(apply H8, apply H12))), apply H17)))).
Subgoal 10:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert mall (form (exs A1) :: form (A n1) :: KK).
Subgoal 10:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form (exs A1) :: form (A n1) :: KK) (form (A n1) :: JJ).
Subgoal 10.1:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
============================
 perm (form (exs A1) :: form (A n1) :: KK) (form (A n1) :: JJ)

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < unfold.
Subgoal 10.1:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (exs A1) :: form (A n1) :: KK) /\
   adj LL A2 (form (A n1) :: JJ) /\ perm KK1 LL

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (A n1).
Subgoal 10.1:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
============================
 exists KK1 LL, adj KK1 (form (A n1)) (form (exs A1) :: form (A n1) :: KK) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\ perm KK1 LL

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (exs A1) :: KK.
Subgoal 10.1:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
============================
 exists LL, adj (form (exs A1) :: KK) (form (A n1))
              (form (exs A1) :: form (A n1) :: KK) /\
   adj LL (form (A n1)) (form (A n1) :: JJ) /\ perm (form (exs A1) :: KK) LL

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness JJ.
Subgoal 10.1:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
============================
 adj (form (exs A1) :: KK) (form (A n1)) (form (exs A1) :: form (A n1) :: KK) /\
   adj JJ (form (A n1)) (form (A n1) :: JJ) /\ perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < split.
Subgoal 10.1.1:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
============================
 adj (form (exs A1) :: KK) (form (A n1)) (form (exs A1) :: form (A n1) :: KK)

Subgoal 10.1.2 is:
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 10.1.3 is:
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 2, split(apply H7, unfold(adj, 1, split(apply H6, apply H12)))).
Subgoal 10.1.2:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
============================
 adj JJ (form (A n1)) (form (A n1) :: JJ)

Subgoal 10.1.3 is:
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 1, split(apply H6, apply H9)).
Subgoal 10.1.3:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
============================
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H11 H3.
Subgoal 10.1.3:

Variables: L JJ A x A1 LL J KK U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
H20 : adj KK (form (exs A1)) U1
H21 : adj U1 (form (all A)) L
============================
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H21 H2.
Subgoal 10.1.3:

Variables: L JJ A x A1 LL J KK U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
H20 : adj KK (form (exs A1)) U1
H21 : adj U1 (form (all A)) L
H22 : perm U1 JJ
============================
 perm (form (exs A1) :: KK) JJ

Subgoal 10 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (exs A1), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(apply H7, apply H12)), apply H20), apply H17)).
Witness: apply H22.
Subgoal 10:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
H20 : perm (form (exs A1) :: form (A n1) :: KK) (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H19 H20.
Subgoal 10:

Variables: L JJ A x A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (exs A1)) L
H4 : adj LL (form (A1 x)) J
H5 : mall J *
H6 : is_fm (form (A n1))
H7 : is_fm (form (exs A1))
H8 : is_fm (form (A1 x))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 x)) U
H14 : adj U (form (all A)) J
H15 : adj U (form (A n1)) (J1 n1)
H16 : mall (J1 n1)
H17 : perm KK KK
H18 : mall (form (A1 x) :: form (A n1) :: KK)
H19 : mall (form (exs A1) :: form (A n1) :: KK)
H20 : perm (form (exs A1) :: form (A n1) :: KK) (form (A n1) :: JJ)
H21 : mall (form (A n1) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

Subgoal 11 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H6, apply H9)), apply H21).
Subgoal 11:

Variables: L JJ A A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < Ht : apply adj_2_is_o to H2.
Subgoal 11:

Variables: L JJ A A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
Ht : is_fm (form (all A))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case Ht.
Subgoal 11:

Variables: L JJ A A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H3.
Subgoal 11:

Variables: L JJ A A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_2_is_o to H4.
Subgoal 11:

Variables: L JJ A A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H2.
Subgoal 11:

Variables: L JJ A A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result_diff to H2 H3.
Subgoal 11:

Variables: L JJ A A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H10 : form (all A) = form (all A1) /\ perm JJ LL \/
        (exists KK, adj KK (form (all A)) LL)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < case H10.
Subgoal 11.1:

Variables: L JJ A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A1)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A1 n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : perm JJ LL
============================
 exists J, adj JJ (form (A1 n1)) J /\ mall J

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply perm_sym to H11.
Subgoal 11.1:

Variables: L JJ A1 LL J
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A1)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A1 n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : perm JJ LL
H12 : perm LL JJ
============================
 exists J, adj JJ (form (A1 n1)) J /\ mall J

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_perm_source to H12 H4.
Subgoal 11.1:

Variables: L JJ A1 LL J LL1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A1)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A1 n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : perm JJ LL
H12 : perm LL JJ
H13 : adj JJ (form (A1 n1)) (LL1 n1)
H14 : perm (J n1) (LL1 n1)
============================
 exists J, adj JJ (form (A1 n1)) J /\ mall J

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H5 H14.
Subgoal 11.1:

Variables: L JJ A1 LL J LL1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A1)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A1 n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : perm JJ LL
H12 : perm LL JJ
H13 : adj JJ (form (A1 n1)) (LL1 n1)
H14 : perm (J n1) (LL1 n1)
H15 : mall (LL1 n1)
============================
 exists J, adj JJ (form (A1 n1)) J /\ mall J

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = LL1 n1] split(apply H13, apply H15).
Subgoal 11.2:

Variables: L JJ A A1 LL J KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_1_is_list to H11.
Subgoal 11.2:

Variables: L JJ A A1 LL J KK
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H11 H4.
Subgoal 11.2:

Variables: L JJ A A1 LL J KK U
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply IH to H5 H14.
Subgoal 11.2:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply perm_refl to H12.
Subgoal 11.2:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H16 _ with L = form (A1 n1) :: form (A n2) :: KK.
Witness: unfold(perm, 2, exists[A2 = form (A n2), KK1 = U n1, LL = form (A1 n1) :: KK] split(split(apply H15, unfold(adj, 2, split(apply H8, unfold(adj, 1, split(apply H6, apply H12))))), unfold(perm, 2, exists[A = form (A1 n1), KK1 = KK, LL = KK] split(split(apply H13, unfold(adj, 1, split(apply H8, apply H12))), apply H17)))).
Subgoal 11.2:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert mall (form (all A1) :: form (A n2) :: KK).
Subgoal 11.2:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < assert perm (form (all A1) :: form (A n2) :: KK) (form (A n2) :: JJ).
Subgoal 11.2.1:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
============================
 perm (form (all A1) :: form (A n2) :: KK) (form (A n2) :: JJ)

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < unfold.
Subgoal 11.2.1:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
============================
 exists A2 KK1 LL, adj KK1 A2 (form (all A1) :: form (A n2) :: KK) /\
   adj LL A2 (form (A n2) :: JJ) /\ perm KK1 LL

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (A n2).
Subgoal 11.2.1:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
============================
 exists KK1 LL, adj KK1 (form (A n2)) (form (all A1) :: form (A n2) :: KK) /\
   adj LL (form (A n2)) (form (A n2) :: JJ) /\ perm KK1 LL

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness form (all A1) :: KK.
Subgoal 11.2.1:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
============================
 exists LL, adj (form (all A1) :: KK) (form (A n2))
              (form (all A1) :: form (A n2) :: KK) /\
   adj LL (form (A n2)) (form (A n2) :: JJ) /\ perm (form (all A1) :: KK) LL

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < witness JJ.
Subgoal 11.2.1:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
============================
 adj (form (all A1) :: KK) (form (A n2)) (form (all A1) :: form (A n2) :: KK) /\
   adj JJ (form (A n2)) (form (A n2) :: JJ) /\ perm (form (all A1) :: KK) JJ

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < split.
Subgoal 11.2.1.1:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
============================
 adj (form (all A1) :: KK) (form (A n2)) (form (all A1) :: form (A n2) :: KK)

Subgoal 11.2.1.2 is:
 adj JJ (form (A n2)) (form (A n2) :: JJ)

Subgoal 11.2.1.3 is:
 perm (form (all A1) :: KK) JJ

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 2, split(apply H7, unfold(adj, 1, split(apply H6, apply H12)))).
Subgoal 11.2.1.2:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
============================
 adj JJ (form (A n2)) (form (A n2) :: JJ)

Subgoal 11.2.1.3 is:
 perm (form (all A1) :: KK) JJ

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: unfold(adj, 1, split(apply H6, apply H9)).
Subgoal 11.2.1.3:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
============================
 perm (form (all A1) :: KK) JJ

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_swap to H11 H3.
Subgoal 11.2.1.3:

Variables: L JJ A A1 LL J KK U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
H20 : adj KK (form (all A1)) U1
H21 : adj U1 (form (all A)) L
============================
 perm (form (all A1) :: KK) JJ

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply adj_same_result to H21 H2.
Subgoal 11.2.1.3:

Variables: L JJ A A1 LL J KK U J1 U1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
H20 : adj KK (form (all A1)) U1
H21 : adj U1 (form (all A)) L
H22 : perm U1 JJ
============================
 perm (form (all A1) :: KK) JJ

Subgoal 11.2 is:
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < backchain perm_trans with K = U1.
Witness: unfold(perm, 2, exists[A = form (all A1), KK1 = KK, LL = KK] split(split(unfold(adj, 1, split(apply H7, apply H12)), apply H20), apply H17)).
Witness: apply H22.
Subgoal 11.2:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
H20 : perm (form (all A1) :: form (A n2) :: KK) (form (A n2) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < apply mall_perm to H19 H20.
Subgoal 11.2:

Variables: L JJ A A1 LL J KK U J1
IH : forall L JJ A, mall L * -> adj JJ (form (all A)) L ->
       (nabla x, exists J, adj JJ (form (A x)) J /\ mall J)
H2 : adj JJ (form (all A)) L
H3 : adj LL (form (all A1)) L
H4 : adj LL (form (A1 n1)) (J n1)
H5 : mall (J n1) *
H6 : is_fm (form (A n1))
H7 : is_fm (form (all A1))
H8 : is_fm (form (A1 n1))
H9 : is_list JJ
H11 : adj KK (form (all A)) LL
H12 : is_list KK
H13 : adj KK (form (A1 n1)) (U n1)
H14 : adj (U n1) (form (all A)) (J n1)
H15 : adj (U n1) (form (A n2)) (J1 n2 n1)
H16 : mall (J1 n2 n1)
H17 : perm KK KK
H18 : mall (form (A1 n1) :: form (A n2) :: KK)
H19 : mall (form (all A1) :: form (A n2) :: KK)
H20 : perm (form (all A1) :: form (A n2) :: KK) (form (A n2) :: JJ)
H21 : mall (form (A n2) :: JJ)
============================
 exists J, adj JJ (form (A n1)) J /\ mall J

all_inv < search.
Witness: exists[J = form (A n1) :: JJ] split(unfold(adj, 1, split(apply H6, apply H9)), apply H21).
Proof completed.
Abella < Theorem mall_cut : 
forall A B JJ J KK K LL, {dual A B} -> adj JJ (form A) J -> mall J ->
  adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL.


============================
 forall A B JJ J KK K LL, {dual A B} -> adj JJ (form A) J -> mall J ->
   adj KK (form 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
============================
 forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J -> mall J ->
   adj KK (form 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
============================
 forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J -> mall J @@ ->
   adj KK (form 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H3 : mall J @@
H4 : adj KK (form 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H8 : form A = form (atom A1) /\ perm JJ (form (natom A1) :: nil) \/
       (exists KK, adj KK (form A) (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual (atom A1) B}@
H2 : adj JJ (form (atom A1)) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H9 : perm JJ (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H9 : perm JJ (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H10 : adj KK1 A2 JJ
H11 : adj LL1 A2 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H10 : adj KK1 (form (natom A1)) JJ
H12 : perm KK1 nil
H13 : is_fm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H10 : adj KK1 (form (natom A1)) JJ
H12 : perm KK1 nil
H13 : is_fm (form (natom A1))
H14 : is_list nil
H15 : perm JJ (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H10 : adj KK1 (form (natom A1)) JJ
H12 : perm KK1 nil
H13 : is_fm (form (natom A1))
H14 : is_list nil
H16 : adj KK2 A3 JJ
H17 : adj LL2 A3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H10 : adj nil (form (natom A1)) JJ
H13 : is_fm (form (natom A1))
H14 : is_list nil
H16 : adj KK2 A3 JJ
H17 : adj LL2 A3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj (form (natom A1) :: nil) (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge (form (natom A1) :: nil) KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H13 : is_fm (form (natom A1))
H14 : is_list nil
H16 : adj KK2 A3 (form (natom A1) :: nil)
H17 : adj LL2 A3 (form (natom A1) :: nil)
H18 : perm KK2 LL2
H19 : is_fm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply merge_move_12 to _ H4 H6.
Witness: unfold(adj, 1, split(apply H13, apply H14)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj (form (natom A1) :: nil) (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge (form (natom A1) :: nil) KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H13 : is_fm (form (natom A1))
H14 : is_list nil
H16 : adj KK2 A3 (form (natom A1) :: nil)
H17 : adj LL2 A3 (form (natom A1) :: nil)
H18 : perm KK2 LL2
H19 : is_fm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj (form (natom A1) :: nil) (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge (form (natom A1) :: nil) KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H13 : is_fm (form (natom A1))
H14 : is_list nil
H16 : adj KK2 A3 (form (natom A1) :: nil)
H17 : adj LL2 A3 (form (natom A1) :: nil)
H18 : perm KK2 LL2
H19 : is_fm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm.
Witness: apply H5.
Witness: apply H22.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H10 : adj KK1 (form (natom A1)) JJ
H13 : is_fm (form (natom A1))
H14 : is_list nil
H16 : adj KK2 A3 JJ
H17 : adj LL2 A3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (atom A1)) J
H4 : adj KK (form (natom A1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H10 : adj KK1 A2 JJ
H12 : perm KK1 (form (natom A1) :: K1)
H13 : is_fm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H9 : adj KK1 (form A) (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual (natom A1) B}@
H2 : adj JJ (form (natom A1)) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H10 : is_fm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj (form (natom A1) :: nil) (form (atom A1)) J
H10 : is_fm (form (natom A1))
H11 : adj K1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H13 : form A = form (tens A1 B1) /\ perm JJ LL1 \/
        (exists KK, adj KK (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual (tens A1 B1) B}@
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form BB) LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form BB) LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form BB) LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form BB) LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : perm JJ LL1
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form BB) LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply perm_sym to *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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form BB) LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 (form AA) L
H25 : merge KK1 KK LL3
H28 : merge JJ1 LL3 L1
H29 : mall L1
H30 : perm LL1 JJ
============================
 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply perm_merge_3 to *H8 *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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form BB) LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 (form AA) L
H25 : merge KK1 KK LL3
H28 : merge JJ1 LL3 L1
H29 : mall L1
H31 : merge JJ1 KK1 JJ
============================
 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply merge_assoc to *H31 *H25 *H28 *H6.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (tens A1 B1)) J
H4 : adj KK (form (par AA BB)) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H15 : {dual A1 AA}*
H16 : {dual B1 BB}*
H17 : adj KK (form AA) KK2
H18 : adj KK2 (form BB) LL2
H19 : mall LL2
H22 : merge KK1 KK2 L
H23 : mall L
H24 : adj LL3 (form AA) L
H29 : mall L1
H32 : 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = L1.
Witness: apply H29.
Witness: apply H32.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H15 : (exists JJ, adj JJ (form A) JJ1 /\ merge JJ KK1 KK2) \/
        (exists KK, adj KK (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 M
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[UKK = L] apply H24.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[V = L] apply H27.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < Ht : assert 0 exists VT, adj V (form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
============================
 exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : is_list V
============================
 exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : is_list V
H27 : is_fm (form (tens A1 B1))
============================
 exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : is_list V
H27 : is_fm (form (tens A1 B1))
H28 : adj V (form (tens A1 B1)) M
============================
 exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[VT = M] apply 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
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
Ht : exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H29 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < witness form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 exists KK LL1, adj KK (form (tens A1 B1)) VT /\
   adj LL1 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 exists LL1, adj V (form (tens A1 B1)) VT /\
   adj LL1 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 adj V (form (tens A1 B1)) VT /\ adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 adj V (form (tens A1 B1)) VT

Subgoal 2.2.1.4.2 is:
 adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H26.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H32.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_sym.
Witness: apply H17.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_sym.
Witness: apply H25.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_assoc with J = KK1, K = JJ2, L = KK, JK = KK2, KL = LL2.
Witness: apply H34.
Witness: apply H24.
Witness: apply H35.
Witness: apply H33.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj JJ2 (form A) JJ1
H17 : merge JJ2 KK1 KK2
H18 : adj JJ2 (form A1) U
H19 : adj U (form A) J1
H20 : merge U KK1 UKK1
H21 : adj KK2 (form A1) UKK1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form A1) UKK
H24 : merge JJ2 KK LL2
H25 : merge LL2 KK1 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = VT.
Witness: apply H27.
Witness: apply H34.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U M
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[UKK = L] apply H24.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[V = L] apply H27.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < Ht : assert 0 exists VT, adj V (form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
============================
 exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : is_list V
============================
 exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : is_list V
H27 : is_fm (form (tens A1 B1))
============================
 exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : is_list V
H27 : is_fm (form (tens A1 B1))
H28 : adj V (form (tens A1 B1)) M
============================
 exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[VT = M] apply 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
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
Ht : exists VT, adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H29 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < witness form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 exists KK LL1, adj KK (form (tens A1 B1)) VT /\
   adj LL1 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 exists LL1, adj V (form (tens A1 B1)) VT /\
   adj LL1 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 adj V (form (tens A1 B1)) VT /\ adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 adj V (form (tens A1 B1)) VT

Subgoal 2.2.2.4.2 is:
 adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H26.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (tens A1 B1)) LL
H33 : merge KK2 KK LL3
============================
 adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H32.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_assoc with J = JJ1, K = KK3, L = KK, JK = KK2, KL = LL2.
Witness: apply H17.
Witness: apply H24.
Witness: apply H25.
Witness: apply H33.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (tens A1 B1)) J
H8 : merge JJ1 KK1 LL1
H9 : adj JJ1 (form A1) J1
H10 : mall J1 **
H11 : adj KK1 (form B1) K1
H12 : mall K1 **
H14 : adj KK2 (form A) LL1
H16 : adj KK3 (form A) KK1
H17 : merge JJ1 KK3 KK2
H18 : adj KK3 (form B1) U
H19 : adj U (form A) K1
H20 : merge JJ1 U UJJ1
H21 : adj KK2 (form B1) UJJ1
H22 : merge U KK UKK
Hi : mall UKK
H23 : adj LL2 (form B1) UKK
H24 : merge KK3 KK LL2
H25 : merge JJ1 LL2 V
H26 : adj V (form (tens A1 B1)) VT
H27 : mall VT
H28 : adj KK2 (form (tens A1 B1)) U1
H31 : merge U1 KK LL
H32 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = VT.
Witness: apply H27.
Witness: apply H34.
Subgoal 3:

Variables: A B JJ KK K LL
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) (form one :: nil)
H4 : adj KK (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual one B}@
H4 : adj KK (form B) K
H5 : mall K
H6 : merge nil KK LL
H7 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H4 : adj KK (form bot) K
H5 : mall K
H6 : merge nil KK LL
H7 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H4 : adj KK (form bot) K
H5 : mall K
H6 : merge nil KK LL
H7 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H4 : adj KK (form bot) K
H5 : mall K
H6 : merge nil KK LL
H7 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = KK.
Witness: apply H10.
Witness: apply H9.
Subgoal 3.2:

Variables: A B KK K LL K1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H6 : merge (form one :: K1) KK LL
H7 : is_fm (form one)
H8 : adj K1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : adj J1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : adj J1 (form B1) K1
H10 : mall K1 **
H11 : form A = form (par A1 B1) /\ perm JJ LL1 \/
        (exists KK, adj KK (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual (par A1 B1) B}@
H2 : adj JJ (form (par A1 B1)) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : adj J1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : adj J1 (form B1) K1
H10 : mall K1 **
H12 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H9 : adj J1 (form B1) K1
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H14 : adj U (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H15 : adj U (form B1) U1
H16 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H15 : adj U (form B1) U1
H16 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H15 : adj U (form B1) U1
H16 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H15 : adj U (form B1) U1
H16 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H15 : adj U (form B1) U1
H16 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[V = L] apply H19.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H15 : adj U (form B1) U1
H16 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H15 : adj U (form B1) U1
H16 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H15 : adj U (form B1) U1
H16 : adj U1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H13 : adj KK1 (form A1) U
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < Ht : assert 0 exists VV, adj LL3 (form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
============================
 exists VV, adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : is_list LL3
============================
 exists VV, adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : is_list LL3
H23 : is_fm (form (par A1 B1))
============================
 exists VV, adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : is_list LL3
H23 : is_fm (form (par A1 B1))
H24 : adj LL3 (form (par A1 B1)) M
============================
 exists VV, adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[VV = M] apply H24.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
Ht : exists VV, adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (par A1 B1)) U2
H25 : adj U2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (par A1 B1)) U2
H27 : merge U2 KK LL
H28 : adj LL4 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (par A1 B1)) U2
H27 : merge U2 KK LL
H28 : adj LL4 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < witness form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (par A1 B1)) U2
H27 : merge U2 KK LL
H28 : adj LL4 (form (par A1 B1)) LL
H29 : merge KK1 KK LL4
============================
 exists KK LL1, adj KK (form (par A1 B1)) VV /\
   adj LL1 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (par A1 B1)) U2
H27 : merge U2 KK LL
H28 : adj LL4 (form (par A1 B1)) LL
H29 : merge KK1 KK LL4
============================
 exists LL1, adj LL3 (form (par A1 B1)) VV /\
   adj LL1 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (par A1 B1)) U2
H27 : merge U2 KK LL
H28 : adj LL4 (form (par A1 B1)) LL
H29 : merge KK1 KK LL4
============================
 adj LL3 (form (par A1 B1)) VV /\ adj LL4 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (par A1 B1)) U2
H27 : merge U2 KK LL
H28 : adj LL4 (form (par A1 B1)) LL
H29 : merge KK1 KK LL4
============================
 adj LL3 (form (par A1 B1)) VV

Subgoal 4.2.3.2 is:
 adj LL4 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H22.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (par A1 B1)) U2
H27 : merge U2 KK LL
H28 : adj LL4 (form (par A1 B1)) LL
H29 : merge KK1 KK LL4
============================
 adj LL4 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H28.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H10 : mall K1 **
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (par A1 B1)) VV
H23 : mall VV
H24 : adj KK1 (form (par A1 B1)) U2
H27 : merge U2 KK LL
H28 : adj LL4 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_perm_det.
Witness: apply H21.
Witness: apply H29.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (par A1 B1)) J
H10 : mall K1 **
H12 : adj KK1 (form A) LL1
H16 : adj U1 (form A) K1
Hi : mall V
H18 : adj LL2 (form B1) V
H20 : adj LL3 (form A1) LL2
H21 : merge KK1 KK LL3
H22 : adj LL3 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = VV.
Witness: apply H23.
Witness: apply H24.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H9 : form A = form bot /\ perm JJ LL1 \/ (exists KK, adj KK (form A) LL1)
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual bot B}@
H2 : adj JJ (form bot) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form A) LL1
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[V = L] apply H13.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < Ht : assert 0 exists VV, adj V (form 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form A) LL1
H11 : merge KK1 KK V
Hi : mall V
============================
 exists VV, adj V (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form A) LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : is_list V
============================
 exists VV, adj V (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply adj_exists to _ H12 with A = form bot.
Witness: unfold(is_fm, 6, true).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form A) LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : is_list V
H13 : adj V (form bot) M
============================
 exists VV, adj V (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[VV = M] apply H13.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form A) LL1
H11 : merge KK1 KK V
Hi : mall V
Ht : exists VV, adj V (form bot) VV
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form A) LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
============================
 mall LL

Subgoal 6 is:
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form A) LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form A) LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form bot) U
H15 : adj U (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form bot) U
H17 : merge U KK LL
H18 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form bot) U
H17 : merge U KK LL
H18 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < witness form 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form bot) U
H17 : merge U KK LL
H18 : adj LL2 (form bot) LL
H19 : merge KK1 KK LL2
============================
 exists KK LL1, adj KK (form bot) VV /\ adj LL1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form bot) U
H17 : merge U KK LL
H18 : adj LL2 (form bot) LL
H19 : merge KK1 KK LL2
============================
 exists LL1, adj V (form bot) VV /\ adj LL1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form bot) U
H17 : merge U KK LL
H18 : adj LL2 (form bot) LL
H19 : merge KK1 KK LL2
============================
 adj V (form bot) VV /\ adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form bot) U
H17 : merge U KK LL
H18 : adj LL2 (form bot) LL
H19 : merge KK1 KK LL2
============================
 adj V (form bot) VV

Subgoal 5.2.3.2 is:
 adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H12.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form bot) U
H17 : merge U KK LL
H18 : adj LL2 (form bot) LL
H19 : merge KK1 KK LL2
============================
 adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H18.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H8 : mall LL1 **
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form bot) VV
H13 : mall VV
H14 : adj KK1 (form bot) U
H17 : merge U KK LL
H18 : adj LL2 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_perm_det.
Witness: apply H11.
Witness: apply H19.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form bot) J
H8 : mall LL1 **
H10 : adj KK1 (form A) LL1
H11 : merge KK1 KK V
Hi : mall V
H12 : adj V (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = VV.
Witness: apply H13.
Witness: apply H14.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H12 : form A = form (wth A1 B1) /\ perm JJ LL1 \/
        (exists KK, adj KK (form A) LL1)
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual (wth A1 B1) B}@
H2 : adj JJ (form (wth A1 B1)) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Ht : is_fm (form (wth A1 B1))
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[V = L] apply H16.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < assert 0 mall (form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
============================
 mall (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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 (form A1) U
H20 : adj U (form A) J1
============================
 mall (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply IH1 to H1 H20 *H9 H4 H5 _ with LL = form A1 :: V.
Witness: unfold(merge, 2, exists[A = form A1, JJ = KK1, LL = V] split(split(apply H19, unfold(adj, 1, split(apply Hfm1, apply H17))), apply H16)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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 (form A1) U
H20 : adj U (form A) J1
H21 : mall (form A1 :: V)
============================
 mall (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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 (form A1) U
H20 : adj U (form A) J1
H21 : mall (form A1 :: V)
H22 : adj KK1 (form B1) U1
H23 : adj U1 (form A) K1
============================
 mall (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply IH1 to H1 H23 *H11 H4 H5 _ with LL = form B1 :: V.
Witness: unfold(merge, 2, exists[A = form B1, JJ = KK1, LL = V] split(split(apply H22, unfold(adj, 1, split(apply Hfm2, apply H17))), apply H16)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form 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 (form A1) U
H20 : adj U (form A) J1
H21 : mall (form A1 :: V)
H22 : adj KK1 (form B1) U1
H23 : adj U1 (form A) K1
H24 : mall (form B1 :: V)
============================
 mall (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: unfold(mall, 6, exists[A = A1, B = B1, LL = V, J = form A1 :: V, K = form B1 :: V] split(split(split(split(unfold(adj, 1, split(unfold(is_fm, 7, split(apply Hfm1, apply Hfm2)), apply H17)), unfold(adj, 1, split(apply Hfm1, apply H17))), apply H21), unfold(adj, 1, split(apply Hfm2, apply H17))), apply H24)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < assert perm (form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
============================
 perm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : adj KK1 (form (wth A1 B1)) U
H21 : adj U (form A) J
============================
 perm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : adj KK1 (form (wth A1 B1)) U
H22 : perm JJ U
============================
 perm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : adj KK1 (form (wth A1 B1)) U
H23 : merge U KK LL
============================
 perm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : adj KK1 (form (wth A1 B1)) U
H23 : merge U KK LL
H24 : adj LL2 (form (wth A1 B1)) LL
H25 : merge KK1 KK LL2
============================
 perm (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : adj KK1 (form (wth A1 B1)) U
H23 : merge U KK LL
H24 : adj LL2 (form (wth A1 B1)) LL
H25 : merge KK1 KK LL2
============================
 exists A KK LL1, adj KK A (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < witness form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : adj KK1 (form (wth A1 B1)) U
H23 : merge U KK LL
H24 : adj LL2 (form (wth A1 B1)) LL
H25 : merge KK1 KK LL2
============================
 adj V (form (wth A1 B1)) (form (wth A1 B1) :: V) /\
   adj LL2 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : adj KK1 (form (wth A1 B1)) U
H23 : merge U KK LL
H24 : adj LL2 (form (wth A1 B1)) LL
H25 : merge KK1 KK LL2
============================
 adj V (form (wth A1 B1)) (form (wth A1 B1) :: V)

Subgoal 6.2.3.2 is:
 adj LL2 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: unfold(adj, 1, split(unfold(is_fm, 7, split(apply Hfm1, apply Hfm2)), apply H17)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : adj KK1 (form (wth A1 B1)) U
H23 : merge U KK LL
H24 : adj LL2 (form (wth A1 B1)) LL
H25 : merge KK1 KK LL2
============================
 adj LL2 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H24.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : adj KK1 (form (wth A1 B1)) U
H23 : merge U KK LL
H24 : adj LL2 (form (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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_perm_det.
Witness: apply H16.
Witness: apply H25.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (wth A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : adj LL1 (form B1) K1
H11 : mall K1 **
H13 : adj KK1 (form A) LL1
Hfm1 : is_fm (form A1)
Hfm2 : is_fm (form B1)
Hfm3 : is_fm (form A)
Hfm4 : is_fm (form B)
H14 : is_list KK1
H15 : is_list KK
H16 : merge KK1 KK V
H17 : is_list V
H18 : perm V V
H19 : mall (form (wth A1 B1) :: V)
H20 : perm (form (wth A1 B1) :: V) LL
============================
 mall LL

Subgoal 7 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = form (wth A1 B1) :: V.
Witness: apply H19.
Witness: apply H20.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form top) J
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form top) J
H8 : form A = form top /\ perm JJ LL1 \/ (exists KK, adj KK (form A) LL1)
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual top B}@
H2 : adj JJ (form top) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form top) J
H9 : perm JJ LL1
============================
 mall LL

Subgoal 7.2 is:
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form top) J
H9 : adj KK1 (form A) LL1
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form top) J
H9 : adj KK1 (form A) LL1
H10 : adj KK1 (form top) U
H11 : adj U (form A) J
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form top) J
H9 : adj KK1 (form A) LL1
H10 : adj KK1 (form top) U
H11 : adj U (form A) J
H12 : perm JJ U
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form top) J
H9 : adj KK1 (form A) LL1
H10 : adj KK1 (form top) U
H11 : adj U (form A) J
H12 : perm JJ U
H13 : merge U KK LL
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form top) J
H9 : adj KK1 (form A) LL1
H11 : adj U (form A) J
H12 : perm JJ U
H14 : adj LL2 (form top) LL
H15 : merge KK1 KK LL2
============================
 mall LL

Subgoal 8 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: unfold(mall, 7, exists[LL1 = LL2] apply H14).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H10 : form A = form (plus A1 B1) /\ perm JJ LL1 \/
        (exists KK, adj KK (form A) LL1)
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual (plus A1 B1) B}@
H2 : adj JJ (form (plus A1 B1)) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : perm JJ LL1
============================
 mall LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (plus A1 B1)) J
H4 : adj KK (form (wth AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (plus A1 B1)) J
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual A1 AA}*
H13 : {dual B1 BB}*
H14 : adj KK (form AA) KK1
H15 : mall KK1
H16 : adj KK (form BB) LL2
H17 : mall LL2
============================
 mall LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (plus A1 B1)) J
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H12 : {dual A1 AA}*
H13 : {dual B1 BB}*
H14 : adj KK (form AA) KK1
H15 : mall KK1
H16 : adj KK (form BB) LL2
H17 : mall LL2
H18 : merge LL1 KK LL
============================
 mall LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain IH.
Witness: apply H12.
Witness: apply H8.
Witness: apply H9.
Witness: apply H14.
Witness: apply H15.
Witness: apply H18.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[V = L] apply H14.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
Ht : exists V, merge KK1 KK V
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (plus A1 B1))
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < assert 0 mall (form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
============================
 mall (form (plus A1 B1) :: V)

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : adj KK1 (form A1) U
H18 : adj U (form A) J1
============================
 mall (form (plus A1 B1) :: V)

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply IH1 to H1 H18 *H9 H4 H5 _ with LL = form A1 :: V.
Witness: unfold(merge, 2, exists[A = form A1, JJ = KK1, LL = V] split(split(apply H17, unfold(adj, 1, split(apply Hfm1, apply H15))), apply H14)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : adj KK1 (form A1) U
H18 : adj U (form A) J1
H19 : mall (form A1 :: V)
============================
 mall (form (plus A1 B1) :: V)

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: unfold(mall, 8, exists[A = A1, B = B1, LL = V, J = form A1 :: V] split(split(unfold(adj, 1, split(unfold(is_fm, 9, split(apply Hfm1, apply Hfm2)), apply H15)), unfold(adj, 1, split(apply Hfm1, apply H15))), apply H19)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < assert perm (form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H19 : adj U (form A) J
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H20 : perm JJ U
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 exists A KK LL1, adj KK A (form (plus A1 B1) :: V) /\ adj LL1 A LL /\
   perm KK LL1

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < witness form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 adj V (form (plus A1 B1)) (form (plus A1 B1) :: V) /\
   adj LL2 (form (plus A1 B1)) LL /\ perm V LL2

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 adj V (form (plus A1 B1)) (form (plus A1 B1) :: V)

Subgoal 8.2.3.2 is:
 adj LL2 (form (plus A1 B1)) LL

Subgoal 8.2.3.3 is:
 perm V LL2

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: unfold(adj, 1, split(unfold(is_fm, 9, split(apply Hfm1, apply Hfm2)), apply H15)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 adj LL2 (form (plus A1 B1)) LL

Subgoal 8.2.3.3 is:
 perm V LL2

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H22.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 perm V LL2

Subgoal 8.2 is:
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_perm_det.
Witness: apply H14.
Witness: apply H23.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form A1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : perm (form (plus A1 B1) :: V) LL
============================
 mall LL

Subgoal 9 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = form (plus A1 B1) :: V.
Witness: apply H17.
Witness: apply H18.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H10 : form A = form (plus A1 B1) /\ perm JJ LL1 \/
        (exists KK, adj KK (form A) LL1)
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual (plus A1 B1) B}@
H2 : adj JJ (form (plus A1 B1)) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : perm JJ LL1
============================
 mall LL

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (plus A1 B1)) J
H4 : adj KK (form (wth AA BB)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (plus A1 B1)) J
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual A1 AA}*
H13 : {dual B1 BB}*
H14 : adj KK (form AA) KK1
H15 : mall KK1
H16 : adj KK (form BB) LL2
H17 : mall LL2
============================
 mall LL

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (plus A1 B1)) J
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H12 : {dual A1 AA}*
H13 : {dual B1 BB}*
H14 : adj KK (form AA) KK1
H15 : mall KK1
H16 : adj KK (form BB) LL2
H17 : mall LL2
H18 : merge LL1 KK LL
============================
 mall LL

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain IH with A = B1, B = BB.
Witness: apply H13.
Witness: apply H8.
Witness: apply H9.
Witness: apply H16.
Witness: apply H17.
Witness: apply H18.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
============================
 exists V, merge KK1 KK V

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[V = L] apply H14.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
Ht : exists V, merge KK1 KK V
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (plus A1 B1))
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < assert 0 mall (form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
============================
 mall (form (plus A1 B1) :: V)

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : adj KK1 (form B1) U
H18 : adj U (form A) J1
============================
 mall (form (plus A1 B1) :: V)

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply IH1 to H1 H18 *H9 H4 H5 _ with LL = form B1 :: V.
Witness: unfold(merge, 2, exists[A = form B1, JJ = KK1, LL = V] split(split(apply H17, unfold(adj, 1, split(apply Hfm2, apply H15))), apply H14)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : adj KK1 (form B1) U
H18 : adj U (form A) J1
H19 : mall (form B1 :: V)
============================
 mall (form (plus A1 B1) :: V)

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: unfold(mall, 9, exists[A = A1, B = B1, LL = V, J = form B1 :: V] split(split(unfold(adj, 1, split(unfold(is_fm, 9, split(apply Hfm1, apply Hfm2)), apply H15)), unfold(adj, 1, split(apply Hfm2, apply H15))), apply H19)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < assert perm (form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H19 : adj U (form A) J
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H20 : perm JJ U
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 perm (form (plus A1 B1) :: V) LL

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 exists A KK LL1, adj KK A (form (plus A1 B1) :: V) /\ adj LL1 A LL /\
   perm KK LL1

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < witness form (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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 adj V (form (plus A1 B1)) (form (plus A1 B1) :: V) /\
   adj LL2 (form (plus A1 B1)) LL /\ perm V LL2

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 adj V (form (plus A1 B1)) (form (plus A1 B1) :: V)

Subgoal 9.2.3.2 is:
 adj LL2 (form (plus A1 B1)) LL

Subgoal 9.2.3.3 is:
 perm V LL2

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: unfold(adj, 1, split(unfold(is_fm, 9, split(apply Hfm1, apply Hfm2)), apply H15)).
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 adj LL2 (form (plus A1 B1)) LL

Subgoal 9.2.3.3 is:
 perm V LL2

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H22.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : adj KK1 (form (plus A1 B1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (plus A1 B1)) LL
H23 : merge KK1 KK LL2
============================
 perm V LL2

Subgoal 9.2 is:
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_perm_det.
Witness: apply H14.
Witness: apply H23.
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 (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (plus A1 B1)) J
H8 : adj LL1 (form B1) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form A1)
Hfm2 : is_fm (form B1)
H17 : mall (form (plus A1 B1) :: V)
H18 : perm (form (plus A1 B1) :: V) LL
============================
 mall LL

Subgoal 10 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = form (plus A1 B1) :: V.
Witness: apply H17.
Witness: apply H18.
Subgoal 10:

Variables: A B JJ J KK K LL x A1 LL1 J1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 10:

Variables: A B JJ J KK K LL x A1 LL1 J1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H10 : form A = form (exs A1) /\ perm JJ LL1 \/
        (exists KK, adj KK (form A) LL1)
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < case H10.
Subgoal 10.1:

Variables: B JJ J KK K LL x A1 LL1 J1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual (exs A1) B}@
H2 : adj JJ (form (exs A1)) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : perm JJ LL1
============================
 mall LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < case H1.
Subgoal 10.1:

Variables: JJ J KK K LL x A1 LL1 J1 B1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (exs A1)) J
H4 : adj KK (form (all B1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual (A1 n1) (B1 n1)}*
============================
 mall LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply all_inv to H5 H4.
Subgoal 10.1:

Variables: JJ J KK K LL x A1 LL1 J1 B1 J2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (exs A1)) J
H4 : adj KK (form (all B1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual (A1 n1) (B1 n1)}*
H13 : adj KK (form (B1 n1)) (J2 n1)
H14 : mall (J2 n1)
============================
 mall LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply perm_merge_1 to H6 H11.
Subgoal 10.1:

Variables: JJ J KK K LL x A1 LL1 J1 B1 J2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (exs A1)) J
H4 : adj KK (form (all B1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual (A1 n1) (B1 n1)}*
H13 : adj KK (form (B1 n1)) (J2 n1)
H14 : mall (J2 n1)
H15 : merge LL1 KK LL
============================
 mall LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut <  inst H12 with n1 = x.
Subgoal 10.1:

Variables: JJ J KK K LL x A1 LL1 J1 B1 J2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (exs A1)) J
H4 : adj KK (form (all B1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual (A1 n1) (B1 n1)}*
H13 : adj KK (form (B1 n1)) (J2 n1)
H14 : mall (J2 n1)
H15 : merge LL1 KK LL
H16 : {dual (A1 x) (B1 x)}*
============================
 mall LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply adj_inst to H13.
Subgoal 10.1:

Variables: JJ J KK K LL x A1 LL1 J1 B1 J2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (exs A1)) J
H4 : adj KK (form (all B1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual (A1 n1) (B1 n1)}*
H13 : adj KK (form (B1 n1)) (J2 n1)
H14 : mall (J2 n1)
H15 : merge LL1 KK LL
H16 : {dual (A1 x) (B1 x)}*
H17 : forall t, adj KK (form (B1 t)) (J2 t)
============================
 mall LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply *H17 with t = x.
Subgoal 10.1:

Variables: JJ J KK K LL x A1 LL1 J1 B1 J2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (exs A1)) J
H4 : adj KK (form (all B1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual (A1 n1) (B1 n1)}*
H13 : adj KK (form (B1 n1)) (J2 n1)
H14 : mall (J2 n1)
H15 : merge LL1 KK LL
H16 : {dual (A1 x) (B1 x)}*
H18 : adj KK (form (B1 x)) (J2 x)
============================
 mall LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply mall_inst to H14.
Subgoal 10.1:

Variables: JJ J KK K LL x A1 LL1 J1 B1 J2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (exs A1)) J
H4 : adj KK (form (all B1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual (A1 n1) (B1 n1)}*
H13 : adj KK (form (B1 n1)) (J2 n1)
H14 : mall (J2 n1)
H15 : merge LL1 KK LL
H16 : {dual (A1 x) (B1 x)}*
H18 : adj KK (form (B1 x)) (J2 x)
H19 : forall t, mall (J2 t)
============================
 mall LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply *H19 with t = x.
Subgoal 10.1:

Variables: JJ J KK K LL x A1 LL1 J1 B1 J2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H2 : adj JJ (form (exs A1)) J
H4 : adj KK (form (all B1)) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : perm JJ LL1
H12 : {dual (A1 n1) (B1 n1)}*
H13 : adj KK (form (B1 n1)) (J2 n1)
H14 : mall (J2 n1)
H15 : merge LL1 KK LL
H16 : {dual (A1 x) (B1 x)}*
H18 : adj KK (form (B1 x)) (J2 x)
H20 : mall (J2 x)
============================
 mall LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain IH with A = A1 x, B = B1 x.
Witness: apply H16.
Witness: apply H8.
Witness: apply H9.
Witness: apply H18.
Witness: apply H20.
Witness: apply H15.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply adj_1_is_list to H11.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply adj_1_is_list to H4.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < Ht : assert 0 exists V, merge KK1 KK V.
Subgoal 10.2.1:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
============================
 exists V, merge KK1 KK V

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply merge_exists to H12 H13.
Subgoal 10.2.1:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 L
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK L
============================
 exists V, merge KK1 KK V

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: exists[V = L] apply H14.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
Ht : exists V, merge KK1 KK V
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < case Ht.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply merge_3_is_list to H14.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK V
H15 : is_list V
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply perm_refl to H15.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 11 is:
 mall LL

mall_cut < Ht : apply adj_2_is_o to H7.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (exs A1))
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < Hfm1 : case Ht.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < Hfm2 : apply is_fm_inst to Hfm1.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfm2 : forall t, is_fm (form (A1 t))
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < Hfmx : apply *Hfm2 with t = x.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < assert 0 mall (form (exs A1) :: V).
Subgoal 10.2.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
============================
 mall (form (exs A1) :: V)

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply adj_swap to H11 H8.
Subgoal 10.2.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : adj KK1 (form (A1 x)) U
H18 : adj U (form A) J1
============================
 mall (form (exs A1) :: V)

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply IH1 to H1 H18 H9 H4 H5 _ with LL = form (A1 x) :: V.
Witness: unfold(merge, 2, exists[A = form (A1 x), JJ = KK1, LL = V] split(split(apply H17, unfold(adj, 1, split(apply Hfmx, apply H15))), apply H14)).
Subgoal 10.2.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : adj KK1 (form (A1 x)) U
H18 : adj U (form A) J1
H19 : mall (form (A1 x) :: V)
============================
 mall (form (exs A1) :: V)

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: unfold(mall, 10, exists[x = x, A = A1, LL = V, J = form (A1 x) :: V] split(split(unfold(adj, 1, split(unfold(is_fm, 12, intros[n1] apply Hfm1), apply H15)), unfold(adj, 1, split(apply Hfmx, apply H15))), apply H19)).
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < assert perm (form (exs A1) :: V) LL.
Subgoal 10.2.3:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
============================
 perm (form (exs A1) :: V) LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply adj_swap to H11 H7.
Subgoal 10.2.3:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : adj KK1 (form (exs A1)) U
H19 : adj U (form A) J
============================
 perm (form (exs A1) :: V) LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply adj_same_result to *H2 *H19.
Subgoal 10.2.3:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : adj KK1 (form (exs A1)) U
H20 : perm JJ U
============================
 perm (form (exs A1) :: V) LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H20.
Subgoal 10.2.3:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : adj KK1 (form (exs A1)) U
H21 : merge U KK LL
============================
 perm (form (exs A1) :: V) LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < apply merge_unadj_1 to H21 H18.
Subgoal 10.2.3:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : adj KK1 (form (exs A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (exs A1)) LL
H23 : merge KK1 KK LL2
============================
 perm (form (exs A1) :: V) LL

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < unfold.
Subgoal 10.2.3:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : adj KK1 (form (exs A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (exs A1)) LL
H23 : merge KK1 KK LL2
============================
 exists A KK LL1, adj KK A (form (exs A1) :: V) /\ adj LL1 A LL /\
   perm KK LL1

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < witness form (exs A1), V, LL2.
Subgoal 10.2.3:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : adj KK1 (form (exs A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (exs A1)) LL
H23 : merge KK1 KK LL2
============================
 adj V (form (exs A1)) (form (exs A1) :: V) /\ adj LL2 (form (exs A1)) LL /\
   perm V LL2

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < split.
Subgoal 10.2.3.1:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : adj KK1 (form (exs A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (exs A1)) LL
H23 : merge KK1 KK LL2
============================
 adj V (form (exs A1)) (form (exs A1) :: V)

Subgoal 10.2.3.2 is:
 adj LL2 (form (exs A1)) LL

Subgoal 10.2.3.3 is:
 perm V LL2

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: unfold(adj, 1, split(unfold(is_fm, 12, intros[n1] apply Hfm1), apply H15)).
Subgoal 10.2.3.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : adj KK1 (form (exs A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (exs A1)) LL
H23 : merge KK1 KK LL2
============================
 adj LL2 (form (exs A1)) LL

Subgoal 10.2.3.3 is:
 perm V LL2

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < search.
Witness: apply H22.
Subgoal 10.2.3.3:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : adj KK1 (form (exs A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (exs A1)) LL
H23 : merge KK1 KK LL2
============================
 perm V LL2

Subgoal 10.2 is:
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain merge_perm_det.
Witness: apply H14.
Witness: apply H23.
Subgoal 10.2:

Variables: A B JJ J KK K LL x A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (exs A1)) J
H8 : adj LL1 (form (A1 x)) J1
H9 : mall J1 **
H11 : adj KK1 (form 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 (form (A1 n1))
Hfmx : is_fm (form (A1 x))
H17 : mall (form (exs A1) :: V)
H18 : perm (form (exs A1) :: V) LL
============================
 mall LL

Subgoal 11 is:
 mall LL

mall_cut < backchain mall_perm with K = form (exs A1) :: V.
Witness: apply H17.
Witness: apply H18.
Subgoal 11:

Variables: A B JJ J KK K LL A1 LL1 J1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
============================
 mall LL

mall_cut < apply adj_same_result_diff to H2 H7.
Subgoal 11:

Variables: A B JJ J KK K LL A1 LL1 J1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H10 : form A = form (all A1) /\ perm JJ LL1 \/
        (exists KK, adj KK (form A) LL1)
============================
 mall LL

mall_cut < case H10.
Subgoal 11.1:

Variables: B JJ J KK K LL A1 LL1 J1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual (all A1) B}@
H2 : adj JJ (form (all A1)) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : perm JJ LL1
============================
 mall LL

Subgoal 11.2 is:
 mall LL

mall_cut < case H1.
Subgoal 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form A) LL1
============================
 mall LL

mall_cut < apply adj_1_is_list to H11.
Subgoal 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
============================
 mall LL

mall_cut < apply adj_1_is_list to H4.
Subgoal 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
============================
 mall LL

mall_cut < Ht : assert 0 exists V, merge KK1 KK V.
Subgoal 11.2.1:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
============================
 exists V, merge KK1 KK V

Subgoal 11.2 is:
 mall LL

mall_cut < apply merge_exists to H12 H13.
Subgoal 11.2.1:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 L
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
H14 : merge KK1 KK L
============================
 exists V, merge KK1 KK V

Subgoal 11.2 is:
 mall LL

mall_cut < search.
Witness: exists[V = L] apply H14.
Subgoal 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form A) LL1
H12 : is_list KK1
H13 : is_list KK
Ht : exists V, merge KK1 KK V
============================
 mall LL

mall_cut < case Ht.
Subgoal 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (all A1))
============================
 mall LL

mall_cut < Hfm1 : case Ht.
Subgoal 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
============================
 mall LL

mall_cut < assert 0 mall (form (all A1) :: V).
Subgoal 11.2.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
============================
 mall (form (all A1) :: V)

Subgoal 11.2 is:
 mall LL

mall_cut < apply adj_swap to H11 H8.
Subgoal 11.2.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : adj KK1 (form (A1 n1)) (U n1)
H18 : adj (U n1) (form A) (J1 n1)
============================
 mall (form (all A1) :: V)

Subgoal 11.2 is:
 mall LL

mall_cut < apply IH1 to H1 H18 H9 H4 H5 _ with LL = form (A1 n1) :: V.
Witness: unfold(merge, 2, exists[A = form (A1 n1), JJ = KK1, LL = V] split(split(apply H17, unfold(adj, 1, split(apply Hfm1, apply H15))), apply H14)).
Subgoal 11.2.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : adj KK1 (form (A1 n1)) (U n1)
H18 : adj (U n1) (form A) (J1 n1)
H19 : mall (form (A1 n1) :: V)
============================
 mall (form (all A1) :: V)

Subgoal 11.2 is:
 mall LL

mall_cut < search.
Witness: unfold(mall, 11, exists[A = A1, LL = V] split(unfold(adj, 1, split(unfold(is_fm, 11, intros[n1] apply Hfm1), apply H15)), intros[n1] exists[J = form (A1 n1) :: V] split(unfold(adj, 1, split(apply Hfm1, apply H15)), apply H19))).
Subgoal 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
============================
 mall LL

mall_cut < assert perm (form (all A1) :: V) LL.
Subgoal 11.2.3:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
============================
 perm (form (all A1) :: V) LL

Subgoal 11.2 is:
 mall LL

mall_cut < apply adj_swap to H11 H7.
Subgoal 11.2.3:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : adj KK1 (form (all A1)) U
H19 : adj U (form A) J
============================
 perm (form (all A1) :: V) LL

Subgoal 11.2 is:
 mall LL

mall_cut < apply adj_same_result to *H2 *H19.
Subgoal 11.2.3:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : adj KK1 (form (all A1)) U
H20 : perm JJ U
============================
 perm (form (all A1) :: V) LL

Subgoal 11.2 is:
 mall LL

mall_cut < apply perm_merge_1 to *H6 *H20.
Subgoal 11.2.3:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : adj KK1 (form (all A1)) U
H21 : merge U KK LL
============================
 perm (form (all A1) :: V) LL

Subgoal 11.2 is:
 mall LL

mall_cut < apply merge_unadj_1 to H21 H18.
Subgoal 11.2.3:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : adj KK1 (form (all A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (all A1)) LL
H23 : merge KK1 KK LL2
============================
 perm (form (all A1) :: V) LL

Subgoal 11.2 is:
 mall LL

mall_cut < unfold.
Subgoal 11.2.3:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : adj KK1 (form (all A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (all A1)) LL
H23 : merge KK1 KK LL2
============================
 exists A KK LL1, adj KK A (form (all A1) :: V) /\ adj LL1 A LL /\
   perm KK LL1

Subgoal 11.2 is:
 mall LL

mall_cut < witness form (all A1), V, LL2.
Subgoal 11.2.3:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : adj KK1 (form (all A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (all A1)) LL
H23 : merge KK1 KK LL2
============================
 adj V (form (all A1)) (form (all A1) :: V) /\ adj LL2 (form (all A1)) LL /\
   perm V LL2

Subgoal 11.2 is:
 mall LL

mall_cut < split.
Subgoal 11.2.3.1:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : adj KK1 (form (all A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (all A1)) LL
H23 : merge KK1 KK LL2
============================
 adj V (form (all A1)) (form (all A1) :: V)

Subgoal 11.2.3.2 is:
 adj LL2 (form (all A1)) LL

Subgoal 11.2.3.3 is:
 perm V LL2

Subgoal 11.2 is:
 mall LL

mall_cut < search.
Witness: unfold(adj, 1, split(unfold(is_fm, 11, intros[n1] apply Hfm1), apply H15)).
Subgoal 11.2.3.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : adj KK1 (form (all A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (all A1)) LL
H23 : merge KK1 KK LL2
============================
 adj LL2 (form (all A1)) LL

Subgoal 11.2.3.3 is:
 perm V LL2

Subgoal 11.2 is:
 mall LL

mall_cut < search.
Witness: apply H22.
Subgoal 11.2.3.3:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V U LL2
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H4 : adj KK (form B) K
H5 : mall K
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : adj KK1 (form (all A1)) U
H21 : merge U KK LL
H22 : adj LL2 (form (all A1)) LL
H23 : merge KK1 KK LL2
============================
 perm V LL2

Subgoal 11.2 is:
 mall LL

mall_cut < backchain merge_perm_det.
Witness: apply H14.
Witness: apply H23.
Subgoal 11.2:

Variables: A B JJ J KK K LL A1 LL1 J1 KK1 V
IH : forall A B JJ J KK K LL, {dual A B}* -> adj JJ (form A) J -> mall J ->
       adj KK (form B) K -> mall K -> merge JJ KK LL -> mall LL
IH1 : forall A B JJ J KK K LL, {dual A B}@ -> adj JJ (form A) J ->
        mall J ** -> adj KK (form B) K -> mall K -> merge JJ KK LL -> 
      mall LL
H1 : {dual A B}@
H2 : adj JJ (form A) J
H4 : adj KK (form B) K
H5 : mall K
H6 : merge JJ KK LL
H7 : adj LL1 (form (all A1)) J
H8 : adj LL1 (form (A1 n1)) (J1 n1)
H9 : mall (J1 n1) **
H11 : adj KK1 (form 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 (form (A1 n1))
H17 : mall (form (all A1) :: V)
H18 : perm (form (all A1) :: V) LL
============================
 mall LL

mall_cut < backchain mall_perm with K = form (all A1) :: V.
Witness: apply H17.
Witness: apply H18.
Proof completed.
Abella <