Welcome to Abella 2.0.7-dev.
Abella < Kind nat Type.
Abella < Import "../../lib/nat".
Importing from "../../lib/nat".
Abella < Kind atm Type.
Abella < Type a, b, c, d, e, f atm.
Abella < Type atom, natom atm -> o.
Abella < Type tens, par o -> o -> o.
Abella < Type one, bot o.
Abella < Type bang, qm o -> o.
Abella < Define is_fm : o -> prop by
is_fm (atom A);
is_fm (natom A);
is_fm (tens A B) := is_fm A /\ is_fm B;
is_fm (par A B) := is_fm A /\ is_fm B;
is_fm one;
is_fm bot;
is_fm (bang A) := is_fm A;
is_fm (qm A) := is_fm A.
Abella < Define dual : o -> o -> prop by
dual (atom A) (natom A);
dual (tens A B) (par AA BB) := dual A AA /\ dual B BB;
dual one bot;
dual (bang A) (qm AA) := dual A AA.
Abella < Theorem dual_is :
forall A B, dual A B -> is_fm A /\ is_fm B.
============================
forall A B, dual A B -> is_fm A /\ is_fm B
dual_is < induction on 1.
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
============================
forall A B, dual A B @ -> is_fm A /\ is_fm B
dual_is < intros.
Variables: A B
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H1 : dual A B @
============================
is_fm A /\ is_fm B
dual_is < case H1.
Subgoal 1:
Variables: A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
============================
is_fm (atom A1) /\ is_fm (natom A1)
Subgoal 2 is:
is_fm (tens A1 B1) /\ is_fm (par AA BB)
Subgoal 3 is:
is_fm one /\ is_fm bot
Subgoal 4 is:
is_fm (bang A1) /\ is_fm (qm AA)
dual_is < search.
Subgoal 2:
Variables: BB AA B1 A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H2 : dual A1 AA *
H3 : dual B1 BB *
============================
is_fm (tens A1 B1) /\ is_fm (par AA BB)
Subgoal 3 is:
is_fm one /\ is_fm bot
Subgoal 4 is:
is_fm (bang A1) /\ is_fm (qm AA)
dual_is < apply IH to *H2.
Subgoal 2:
Variables: BB AA B1 A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H3 : dual B1 BB *
H4 : is_fm A1
H5 : is_fm AA
============================
is_fm (tens A1 B1) /\ is_fm (par AA BB)
Subgoal 3 is:
is_fm one /\ is_fm bot
Subgoal 4 is:
is_fm (bang A1) /\ is_fm (qm AA)
dual_is < apply IH to *H3.
Subgoal 2:
Variables: BB AA B1 A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H4 : is_fm A1
H5 : is_fm AA
H6 : is_fm B1
H7 : is_fm BB
============================
is_fm (tens A1 B1) /\ is_fm (par AA BB)
Subgoal 3 is:
is_fm one /\ is_fm bot
Subgoal 4 is:
is_fm (bang A1) /\ is_fm (qm AA)
dual_is < search.
Subgoal 3:
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
============================
is_fm one /\ is_fm bot
Subgoal 4 is:
is_fm (bang A1) /\ is_fm (qm AA)
dual_is < search.
Subgoal 4:
Variables: AA A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H2 : dual A1 AA *
============================
is_fm (bang A1) /\ is_fm (qm AA)
dual_is < apply IH to *H2.
Subgoal 4:
Variables: AA A1
IH : forall A B, dual A B * -> is_fm A /\ is_fm B
H3 : is_fm A1
H4 : is_fm AA
============================
is_fm (bang A1) /\ is_fm (qm AA)
dual_is < search.
Proof completed.
Abella < Import "../../lib/merge" with is_o := is_fm.
Importing from "../../lib/merge".
Abella < Define mell : (list o) -> (list o) -> prop by
mell QL L := is_list QL /\ (exists A, adj (natom A :: nil) (atom A) L);
mell QL L := exists A B LL, adj LL (tens A B) L /\
(exists JJ KK, merge JJ KK LL /\ (exists J, adj JJ A J /\ mell QL J) /\
(exists K, adj KK B K /\ mell QL K));
mell QL (one :: nil) := is_list QL;
mell QL L := exists A B LL, adj LL (par A B) L /\
(exists J, adj LL A J /\ (exists K, adj J B K /\ mell QL K));
mell QL L := exists LL, adj LL bot L /\ mell QL LL;
mell QL (bang A :: nil) := mell QL (A :: nil);
mell QL L := exists A LL, adj LL (qm A) L /\ (exists QK, adj QL A QK /\ mell QK LL);
mell QL L := exists A QK, adj QK A QL /\ (exists J, adj L A J /\ mell QL J).
Abella < Theorem mell_is :
forall QL L, mell QL L -> is_list QL /\ is_list L.
============================
forall QL L, mell QL L -> is_list QL /\ is_list L
mell_is < induction on 1.
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
============================
forall QL L, mell QL L @ -> is_list QL /\ is_list L
mell_is < intros.
Variables: QL L
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H1 : mell QL L @
============================
is_list QL /\ is_list L
mell_is < case H1.
Subgoal 1:
Variables: QL L A
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : is_list QL
H3 : adj (natom A :: nil) (atom A) L
============================
is_list QL /\ is_list L
Subgoal 2 is:
is_list QL /\ is_list L
Subgoal 3 is:
is_list QL /\ is_list (one :: nil)
Subgoal 4 is:
is_list QL /\ is_list L
Subgoal 5 is:
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply adj_3_is_list to H3.
Subgoal 1:
Variables: QL L A
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : is_list QL
H3 : adj (natom A :: nil) (atom A) L
H4 : is_list L
============================
is_list QL /\ is_list L
Subgoal 2 is:
is_list QL /\ is_list L
Subgoal 3 is:
is_list QL /\ is_list (one :: nil)
Subgoal 4 is:
is_list QL /\ is_list L
Subgoal 5 is:
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < search.
Subgoal 2:
Variables: QL L A B LL JJ KK J K
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (tens A B) L
H3 : merge JJ KK LL
H4 : adj JJ A J
H5 : mell QL J *
H6 : adj KK B K
H7 : mell QL K *
============================
is_list QL /\ is_list L
Subgoal 3 is:
is_list QL /\ is_list (one :: nil)
Subgoal 4 is:
is_list QL /\ is_list L
Subgoal 5 is:
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply IH to H5.
Subgoal 2:
Variables: QL L A B LL JJ KK J K
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (tens A B) L
H3 : merge JJ KK LL
H4 : adj JJ A J
H5 : mell QL J *
H6 : adj KK B K
H7 : mell QL K *
H8 : is_list QL
H9 : is_list J
============================
is_list QL /\ is_list L
Subgoal 3 is:
is_list QL /\ is_list (one :: nil)
Subgoal 4 is:
is_list QL /\ is_list L
Subgoal 5 is:
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply adj_3_is_list to H2.
Subgoal 2:
Variables: QL L A B LL JJ KK J K
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (tens A B) L
H3 : merge JJ KK LL
H4 : adj JJ A J
H5 : mell QL J *
H6 : adj KK B K
H7 : mell QL K *
H8 : is_list QL
H9 : is_list J
H10 : is_list L
============================
is_list QL /\ is_list L
Subgoal 3 is:
is_list QL /\ is_list (one :: nil)
Subgoal 4 is:
is_list QL /\ is_list L
Subgoal 5 is:
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < search.
Subgoal 3:
Variables: QL
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : is_list QL
============================
is_list QL /\ is_list (one :: nil)
Subgoal 4 is:
is_list QL /\ is_list L
Subgoal 5 is:
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < search.
Subgoal 4:
Variables: QL L A B LL J K
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (par A B) L
H3 : adj LL A J
H4 : adj J B K
H5 : mell QL K *
============================
is_list QL /\ is_list L
Subgoal 5 is:
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply IH to H5.
Subgoal 4:
Variables: QL L A B LL J K
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (par A B) L
H3 : adj LL A J
H4 : adj J B K
H5 : mell QL K *
H6 : is_list QL
H7 : is_list K
============================
is_list QL /\ is_list L
Subgoal 5 is:
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply adj_3_is_list to H2.
Subgoal 4:
Variables: QL L A B LL J K
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (par A B) L
H3 : adj LL A J
H4 : adj J B K
H5 : mell QL K *
H6 : is_list QL
H7 : is_list K
H8 : is_list L
============================
is_list QL /\ is_list L
Subgoal 5 is:
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < search.
Subgoal 5:
Variables: QL L LL
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL bot L
H3 : mell QL LL *
============================
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply IH to H3.
Subgoal 5:
Variables: QL L LL
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL bot L
H3 : mell QL LL *
H4 : is_list QL
H5 : is_list LL
============================
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply adj_3_is_list to H2.
Subgoal 5:
Variables: QL L LL
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL bot L
H3 : mell QL LL *
H4 : is_list QL
H5 : is_list LL
H6 : is_list L
============================
is_list QL /\ is_list L
Subgoal 6 is:
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < search.
Subgoal 6:
Variables: QL A
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : mell QL (A :: nil) *
============================
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply IH to H2.
Subgoal 6:
Variables: QL A
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : mell QL (A :: nil) *
H3 : is_list QL
H4 : is_list (A :: nil)
============================
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < case H4.
Subgoal 6:
Variables: QL A
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : mell QL (A :: nil) *
H3 : is_list QL
H5 : is_fm A
H6 : is_list nil
============================
is_list QL /\ is_list (bang A :: nil)
Subgoal 7 is:
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < search.
Subgoal 7:
Variables: QL L A LL QK
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (qm A) L
H3 : adj QL A QK
H4 : mell QK LL *
============================
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply IH to H4.
Subgoal 7:
Variables: QL L A LL QK
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (qm A) L
H3 : adj QL A QK
H4 : mell QK LL *
H5 : is_list QK
H6 : is_list LL
============================
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply adj_3_is_list to H2.
Subgoal 7:
Variables: QL L A LL QK
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (qm A) L
H3 : adj QL A QK
H4 : mell QK LL *
H5 : is_list QK
H6 : is_list LL
H7 : is_list L
============================
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < apply adj_1_is_list to H3.
Subgoal 7:
Variables: QL L A LL QK
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj LL (qm A) L
H3 : adj QL A QK
H4 : mell QK LL *
H5 : is_list QK
H6 : is_list LL
H7 : is_list L
H8 : is_list QL
============================
is_list QL /\ is_list L
Subgoal 8 is:
is_list QL /\ is_list L
mell_is < search.
Subgoal 8:
Variables: QL L A QK J
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj QK A QL
H3 : adj L A J
H4 : mell QL J *
============================
is_list QL /\ is_list L
mell_is < apply IH to H4.
Subgoal 8:
Variables: QL L A QK J
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj QK A QL
H3 : adj L A J
H4 : mell QL J *
H5 : is_list QL
H6 : is_list J
============================
is_list QL /\ is_list L
mell_is < apply adj_1_is_list to H3.
Subgoal 8:
Variables: QL L A QK J
IH : forall QL L, mell QL L * -> is_list QL /\ is_list L
H2 : adj QK A QL
H3 : adj L A J
H4 : mell QL J *
H5 : is_list QL
H6 : is_list J
H7 : is_list L
============================
is_list QL /\ is_list L
mell_is < search.
Proof completed.
Abella < Theorem mell_weaken_q :
forall QJ QK QL J, mell QJ J -> merge QJ QK QL -> mell QL J.
============================
forall QJ QK QL J, mell QJ J -> merge QJ QK QL -> mell QL J
mell_weaken_q < induction on 1.
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
============================
forall QJ QK QL J, mell QJ J @ -> merge QJ QK QL -> mell QL J
mell_weaken_q < intros.
Variables: QJ QK QL J
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H1 : mell QJ J @
H2 : merge QJ QK QL
============================
mell QL J
mell_weaken_q < apply merge_3_is_list to H2.
Variables: QJ QK QL J
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H1 : mell QJ J @
H2 : merge QJ QK QL
H3 : is_list QL
============================
mell QL J
mell_weaken_q < case H1.
Subgoal 1:
Variables: QJ QK QL J A
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : is_list QJ
H5 : adj (natom A :: nil) (atom A) J
============================
mell QL J
Subgoal 2 is:
mell QL J
Subgoal 3 is:
mell QL (one :: nil)
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < search.
Subgoal 2:
Variables: QJ QK QL J A B LL JJ KK J1 K
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (tens A B) J
H5 : merge JJ KK LL
H6 : adj JJ A J1
H7 : mell QJ J1 *
H8 : adj KK B K
H9 : mell QJ K *
============================
mell QL J
Subgoal 3 is:
mell QL (one :: nil)
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < apply IH to *H7 H2.
Subgoal 2:
Variables: QJ QK QL J A B LL JJ KK J1 K
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (tens A B) J
H5 : merge JJ KK LL
H6 : adj JJ A J1
H8 : adj KK B K
H9 : mell QJ K *
H10 : mell QL J1
============================
mell QL J
Subgoal 3 is:
mell QL (one :: nil)
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < apply IH to *H9 H2.
Subgoal 2:
Variables: QJ QK QL J A B LL JJ KK J1 K
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (tens A B) J
H5 : merge JJ KK LL
H6 : adj JJ A J1
H8 : adj KK B K
H10 : mell QL J1
H11 : mell QL K
============================
mell QL J
Subgoal 3 is:
mell QL (one :: nil)
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < search.
Subgoal 3:
Variables: QJ QK QL
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : is_list QJ
============================
mell QL (one :: nil)
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < search.
Subgoal 4:
Variables: QJ QK QL J A B LL J1 K
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (par A B) J
H5 : adj LL A J1
H6 : adj J1 B K
H7 : mell QJ K *
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < apply IH to *H7 H2.
Subgoal 4:
Variables: QJ QK QL J A B LL J1 K
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (par A B) J
H5 : adj LL A J1
H6 : adj J1 B K
H8 : mell QL K
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < search.
Subgoal 5:
Variables: QJ QK QL J LL
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL bot J
H5 : mell QJ LL *
============================
mell QL J
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < apply IH to *H5 H2.
Subgoal 5:
Variables: QJ QK QL J LL
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL bot J
H6 : mell QL LL
============================
mell QL J
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < search.
Subgoal 6:
Variables: QJ QK QL A
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : mell QJ (A :: nil) *
============================
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < apply IH to *H4 H2.
Subgoal 6:
Variables: QJ QK QL A
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H5 : mell QL (A :: nil)
============================
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < search.
Subgoal 7:
Variables: QJ QK QL J A LL QK1
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (qm A) J
H5 : adj QJ A QK1
H6 : mell QK1 LL *
============================
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < apply adj_2_is_o to H5.
Subgoal 7:
Variables: QJ QK QL J A LL QK1
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (qm A) J
H5 : adj QJ A QK1
H6 : mell QK1 LL *
H7 : is_fm A
============================
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < apply adj_exists to H7 H3.
Subgoal 7:
Variables: QJ QK QL J A LL QK1 M
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (qm A) J
H5 : adj QJ A QK1
H6 : mell QK1 LL *
H7 : is_fm A
H8 : adj QL A M
============================
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < assert merge QK1 QK M.
Subgoal 7:
Variables: QJ QK QL J A LL QK1 M
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (qm A) J
H5 : adj QJ A QK1
H6 : mell QK1 LL *
H7 : is_fm A
H8 : adj QL A M
H9 : merge QK1 QK M
============================
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < apply IH to *H6 H9.
Subgoal 7:
Variables: QJ QK QL J A LL QK1 M
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj LL (qm A) J
H5 : adj QJ A QK1
H7 : is_fm A
H8 : adj QL A M
H9 : merge QK1 QK M
H10 : mell M LL
============================
mell QL J
Subgoal 8 is:
mell QL J
mell_weaken_q < search.
Subgoal 8:
Variables: QJ QK QL J A QK1 J1
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj QK1 A QJ
H5 : adj J A J1
H6 : mell QJ J1 *
============================
mell QL J
mell_weaken_q < apply IH to *H6 H2.
Subgoal 8:
Variables: QJ QK QL J A QK1 J1
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj QK1 A QJ
H5 : adj J A J1
H7 : mell QL J1
============================
mell QL J
mell_weaken_q < apply merge_unadj_1 to H2 H4.
Subgoal 8:
Variables: QJ QK QL J A QK1 J1 LL
IH : forall QJ QK QL J, mell QJ J * -> merge QJ QK QL -> mell QL J
H2 : merge QJ QK QL
H3 : is_list QL
H4 : adj QK1 A QJ
H5 : adj J A J1
H7 : mell QL J1
H8 : adj LL A QL
H9 : merge QK1 QK LL
============================
mell QL J
mell_weaken_q < search.
Proof completed.
Abella < Theorem mell_weaken_q1 :
forall QJ J A QL, mell QJ J -> adj QJ A QL -> mell QL J.
============================
forall QJ J A QL, mell QJ J -> adj QJ A QL -> mell QL J
mell_weaken_q1 < intros.
Variables: QJ J A QL
H1 : mell QJ J
H2 : adj QJ A QL
============================
mell QL J
mell_weaken_q1 < assert merge QJ (A :: nil) QL.
Subgoal 1:
Variables: QJ J A QL
H1 : mell QJ J
H2 : adj QJ A QL
============================
merge QJ (A :: nil) QL
Subgoal is:
mell QL J
mell_weaken_q1 < apply adj_2_is_o to H2.
Subgoal 1:
Variables: QJ J A QL
H1 : mell QJ J
H2 : adj QJ A QL
H3 : is_fm A
============================
merge QJ (A :: nil) QL
Subgoal is:
mell QL J
mell_weaken_q1 < apply adj_1_is_list to H2.
Subgoal 1:
Variables: QJ J A QL
H1 : mell QJ J
H2 : adj QJ A QL
H3 : is_fm A
H4 : is_list QJ
============================
merge QJ (A :: nil) QL
Subgoal is:
mell QL J
mell_weaken_q1 < apply merge_nil_equal to H4.
Subgoal 1:
Variables: QJ J A QL
H1 : mell QJ J
H2 : adj QJ A QL
H3 : is_fm A
H4 : is_list QJ
H5 : merge nil QJ QJ
============================
merge QJ (A :: nil) QL
Subgoal is:
mell QL J
mell_weaken_q1 < apply merge_sym to *H5.
Subgoal 1:
Variables: QJ J A QL
H1 : mell QJ J
H2 : adj QJ A QL
H3 : is_fm A
H4 : is_list QJ
H6 : merge QJ nil QJ
============================
merge QJ (A :: nil) QL
Subgoal is:
mell QL J
mell_weaken_q1 < search.
Variables: QJ J A QL
H1 : mell QJ J
H2 : adj QJ A QL
H3 : merge QJ (A :: nil) QL
============================
mell QL J
mell_weaken_q1 < backchain mell_weaken_q.
Proof completed.
Abella < Theorem mell_perm_q :
forall QK QL L, mell QK L -> perm QK QL -> mell QL L.
============================
forall QK QL L, mell QK L -> perm QK QL -> mell QL L
mell_perm_q < induction on 1.
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
============================
forall QK QL L, mell QK L @ -> perm QK QL -> mell QL L
mell_perm_q < intros.
Variables: QK QL L
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H1 : mell QK L @
H2 : perm QK QL
============================
mell QL L
mell_perm_q < case H1.
Subgoal 1:
Variables: QK QL L A
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : is_list QK
H4 : adj (natom A :: nil) (atom A) L
============================
mell QL L
Subgoal 2 is:
mell QL L
Subgoal 3 is:
mell QL (one :: nil)
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply perm_2_is_list to H2.
Subgoal 1:
Variables: QK QL L A
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : is_list QK
H4 : adj (natom A :: nil) (atom A) L
H5 : is_list QL
============================
mell QL L
Subgoal 2 is:
mell QL L
Subgoal 3 is:
mell QL (one :: nil)
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < search.
Subgoal 2:
Variables: QK QL L A B LL JJ KK J K
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mell QK J *
H7 : adj KK B K
H8 : mell QK K *
============================
mell QL L
Subgoal 3 is:
mell QL (one :: nil)
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply IH to H6 H2.
Subgoal 2:
Variables: QK QL L A B LL JJ KK J K
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mell QK J *
H7 : adj KK B K
H8 : mell QK K *
H9 : mell QL J
============================
mell QL L
Subgoal 3 is:
mell QL (one :: nil)
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply IH to H8 H2.
Subgoal 2:
Variables: QK QL L A B LL JJ KK J K
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mell QK J *
H7 : adj KK B K
H8 : mell QK K *
H9 : mell QL J
H10 : mell QL K
============================
mell QL L
Subgoal 3 is:
mell QL (one :: nil)
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < search.
Subgoal 3:
Variables: QK QL
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : is_list QK
============================
mell QL (one :: nil)
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply perm_2_is_list to H2.
Subgoal 3:
Variables: QK QL
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : is_list QK
H4 : is_list QL
============================
mell QL (one :: nil)
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < search.
Subgoal 4:
Variables: QK QL L A B LL J K
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (par A B) L
H4 : adj LL A J
H5 : adj J B K
H6 : mell QK K *
============================
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply IH to H6 H2.
Subgoal 4:
Variables: QK QL L A B LL J K
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (par A B) L
H4 : adj LL A J
H5 : adj J B K
H6 : mell QK K *
H7 : mell QL K
============================
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < search.
Subgoal 5:
Variables: QK QL L LL
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL bot L
H4 : mell QK LL *
============================
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply IH to H4 H2.
Subgoal 5:
Variables: QK QL L LL
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL bot L
H4 : mell QK LL *
H5 : mell QL LL
============================
mell QL L
Subgoal 6 is:
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < search.
Subgoal 6:
Variables: QK QL A
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : mell QK (A :: nil) *
============================
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply IH to H3 H2.
Subgoal 6:
Variables: QK QL A
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : mell QK (A :: nil) *
H4 : mell QL (A :: nil)
============================
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < search.
Subgoal 7:
Variables: QK QL L A LL QK1
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (qm A) L
H4 : adj QK A QK1
H5 : mell QK1 LL *
============================
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < Ht : assert 0 exists QL1, adj QL A QL1.
Subgoal 7.1:
Variables: QK QL L A LL QK1
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (qm A) L
H4 : adj QK A QK1
H5 : mell QK1 LL *
============================
exists QL1, adj QL A QL1
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply perm_2_is_list to H2.
Subgoal 7.1:
Variables: QK QL L A LL QK1
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (qm A) L
H4 : adj QK A QK1
H5 : mell QK1 LL *
H6 : is_list QL
============================
exists QL1, adj QL A QL1
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply adj_2_is_o to H4.
Subgoal 7.1:
Variables: QK QL L A LL QK1
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (qm A) L
H4 : adj QK A QK1
H5 : mell QK1 LL *
H6 : is_list QL
H7 : is_fm A
============================
exists QL1, adj QL A QL1
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply adj_exists to H7 H6.
Subgoal 7.1:
Variables: QK QL L A LL QK1 M
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (qm A) L
H4 : adj QK A QK1
H5 : mell QK1 LL *
H6 : is_list QL
H7 : is_fm A
H8 : adj QL A M
============================
exists QL1, adj QL A QL1
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < search.
Subgoal 7:
Variables: QK QL L A LL QK1
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (qm A) L
H4 : adj QK A QK1
H5 : mell QK1 LL *
Ht : exists QL1, adj QL A QL1
============================
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < case Ht.
Subgoal 7:
Variables: QK QL L A LL QK1 QL1
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (qm A) L
H4 : adj QK A QK1
H5 : mell QK1 LL *
H6 : adj QL A QL1
============================
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply adj_preserves_perm to H4 H6 H2.
Subgoal 7:
Variables: QK QL L A LL QK1 QL1
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (qm A) L
H4 : adj QK A QK1
H5 : mell QK1 LL *
H6 : adj QL A QL1
H7 : perm QK1 QL1
============================
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < apply IH to H5 H7.
Subgoal 7:
Variables: QK QL L A LL QK1 QL1
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj LL (qm A) L
H4 : adj QK A QK1
H5 : mell QK1 LL *
H6 : adj QL A QL1
H7 : perm QK1 QL1
H8 : mell QL1 LL
============================
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_q < search.
Subgoal 8:
Variables: QK QL L A QK1 J
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj QK1 A QK
H4 : adj L A J
H5 : mell QK J *
============================
mell QL L
mell_perm_q < apply IH to H5 H2.
Subgoal 8:
Variables: QK QL L A QK1 J
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj QK1 A QK
H4 : adj L A J
H5 : mell QK J *
H6 : mell QL J
============================
mell QL L
mell_perm_q < apply adj_perm to H2 H3.
Subgoal 8:
Variables: QK QL L A QK1 J KK
IH : forall QK QL L, mell QK L * -> perm QK QL -> mell QL L
H2 : perm QK QL
H3 : adj QK1 A QK
H4 : adj L A J
H5 : mell QK J *
H6 : mell QL J
H7 : adj KK A QL
============================
mell QL L
mell_perm_q < search.
Proof completed.
Abella < Theorem mell_perm_l :
forall QL K L, mell QL K -> perm K L -> mell QL L.
============================
forall QL K L, mell QL K -> perm K L -> mell QL L
mell_perm_l < induction on 1.
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
============================
forall QL K L, mell QL K @ -> perm K L -> mell QL L
mell_perm_l < intros.
Variables: QL K L
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H1 : mell QL K @
H2 : perm K L
============================
mell QL L
mell_perm_l < case H1.
Subgoal 1:
Variables: QL K L A
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : is_list QL
H4 : adj (natom A :: nil) (atom A) K
============================
mell QL L
Subgoal 2 is:
mell QL L
Subgoal 3 is:
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_perm_full to H2 H4.
Subgoal 1:
Variables: QL K L A KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : is_list QL
H4 : adj (natom A :: nil) (atom A) K
H5 : adj KK (atom A) L
H6 : perm (natom A :: nil) KK
============================
mell QL L
Subgoal 2 is:
mell QL L
Subgoal 3 is:
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply perm_cons_1 to *H6.
Subgoal 1:
Variables: QL K L A KK J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : is_list QL
H4 : adj (natom A :: nil) (atom A) K
H5 : adj KK (atom A) L
H7 : adj J (natom A) KK
H8 : perm nil J
============================
mell QL L
Subgoal 2 is:
mell QL L
Subgoal 3 is:
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply perm_nil_1 to *H8.
Subgoal 1:
Variables: QL K L A KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : is_list QL
H4 : adj (natom A :: nil) (atom A) K
H5 : adj KK (atom A) L
H7 : adj nil (natom A) KK
============================
mell QL L
Subgoal 2 is:
mell QL L
Subgoal 3 is:
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < case H7.
Subgoal 1:
Variables: QL K L A
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : is_list QL
H4 : adj (natom A :: nil) (atom A) K
H5 : adj (natom A :: nil) (atom A) L
H9 : is_fm (natom A)
H10 : is_list nil
============================
mell QL L
Subgoal 2 is:
mell QL L
Subgoal 3 is:
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 2:
Variables: QL K L A B LL JJ KK J K1
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj LL (tens A B) K
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mell QL J *
H7 : adj KK B K1
H8 : mell QL K1 *
============================
mell QL L
Subgoal 3 is:
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_perm_full to *H2 *H3.
Subgoal 2:
Variables: QL K L A B LL JJ KK J K1 KK1
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : merge JJ KK LL
H5 : adj JJ A J
H6 : mell QL J *
H7 : adj KK B K1
H8 : mell QL K1 *
H9 : adj KK1 (tens A B) L
H10 : perm LL KK1
============================
mell QL L
Subgoal 3 is:
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply perm_merge_3 to *H4 H10.
Subgoal 2:
Variables: QL K L A B LL JJ KK J K1 KK1
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H5 : adj JJ A J
H6 : mell QL J *
H7 : adj KK B K1
H8 : mell QL K1 *
H9 : adj KK1 (tens A B) L
H10 : perm LL KK1
H11 : merge JJ KK KK1
============================
mell QL L
Subgoal 3 is:
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 3:
Variables: QL L
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm (one :: nil) L
H3 : is_list QL
============================
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply perm_cons_1 to *H2.
Subgoal 3:
Variables: QL L J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : is_list QL
H4 : adj J one L
H5 : perm nil J
============================
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply perm_nil_1 to *H5.
Subgoal 3:
Variables: QL L
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : is_list QL
H4 : adj nil one L
============================
mell QL L
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < case H4.
Subgoal 3:
Variables: QL
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : is_list QL
H6 : is_fm one
H7 : is_list nil
============================
mell QL (one :: nil)
Subgoal 4 is:
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 4:
Variables: QL K L A B LL J K1
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj LL (par A B) K
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
============================
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_perm_full to *H2 *H3.
Subgoal 4:
Variables: QL K L A B LL J K1 KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
============================
mell QL L
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < unfold 4.
Subgoal 4:
Variables: QL K L A B LL J K1 KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
============================
exists A B LL, adj LL (par A B) L /\
(exists J, adj LL A J /\ (exists K, adj J B K /\ mell QL K))
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < witness A, B, KK.
Subgoal 4:
Variables: QL K L A B LL J K1 KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
============================
adj KK (par A B) L /\
(exists J, adj KK A J /\ (exists K, adj J B K /\ mell QL K))
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < split.
Subgoal 4.1:
Variables: QL K L A B LL J K1 KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
============================
adj KK (par A B) L
Subgoal 4.2 is:
exists J, adj KK A J /\ (exists K, adj J B K /\ mell QL K)
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 4.2:
Variables: QL K L A B LL J K1 KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
============================
exists J, adj KK A J /\ (exists K, adj J B K /\ mell QL K)
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_2_is_o to H4.
Subgoal 4.2:
Variables: QL K L A B LL J K1 KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : is_fm A
============================
exists J, adj KK A J /\ (exists K, adj J B K /\ mell QL K)
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_1_is_list to H7.
Subgoal 4.2:
Variables: QL K L A B LL J K1 KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H9 : is_fm A
H10 : is_list KK
============================
exists J, adj KK A J /\ (exists K, adj J B K /\ mell QL K)
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_exists to *H9 *H10.
Subgoal 4.2:
Variables: QL K L A B LL J K1 KK M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H11 : adj KK A M
============================
exists J, adj KK A J /\ (exists K, adj J B K /\ mell QL K)
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < witness M.
Subgoal 4.2:
Variables: QL K L A B LL J K1 KK M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H11 : adj KK A M
============================
adj KK A M /\ (exists K, adj M B K /\ mell QL K)
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < split.
Subgoal 4.2.1:
Variables: QL K L A B LL J K1 KK M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H11 : adj KK A M
============================
adj KK A M
Subgoal 4.2.2 is:
exists K, adj M B K /\ mell QL K
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 4.2.2:
Variables: QL K L A B LL J K1 KK M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj LL A J
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H8 : perm LL KK
H11 : adj KK A M
============================
exists K, adj M B K /\ mell QL K
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_preserves_perm to *H4 H11 *H8.
Subgoal 4.2.2:
Variables: QL K L A B LL J K1 KK M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H11 : adj KK A M
H12 : perm J M
============================
exists K, adj M B K /\ mell QL K
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_2_is_o to H5.
Subgoal 4.2.2:
Variables: QL K L A B LL J K1 KK M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H11 : adj KK A M
H12 : perm J M
H13 : is_fm B
============================
exists K, adj M B K /\ mell QL K
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply perm_2_is_list to H12.
Subgoal 4.2.2:
Variables: QL K L A B LL J K1 KK M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H11 : adj KK A M
H12 : perm J M
H13 : is_fm B
H14 : is_list M
============================
exists K, adj M B K /\ mell QL K
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_exists to *H13 *H14.
Subgoal 4.2.2:
Variables: QL K L A B LL J K1 KK M M1
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H11 : adj KK A M
H12 : perm J M
H15 : adj M B M1
============================
exists K, adj M B K /\ mell QL K
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < witness M1.
Subgoal 4.2.2:
Variables: QL K L A B LL J K1 KK M M1
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H11 : adj KK A M
H12 : perm J M
H15 : adj M B M1
============================
adj M B M1 /\ mell QL M1
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < split.
Subgoal 4.2.2.1:
Variables: QL K L A B LL J K1 KK M M1
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H11 : adj KK A M
H12 : perm J M
H15 : adj M B M1
============================
adj M B M1
Subgoal 4.2.2.2 is:
mell QL M1
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 4.2.2.2:
Variables: QL K L A B LL J K1 KK M M1
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H5 : adj J B K1
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H11 : adj KK A M
H12 : perm J M
H15 : adj M B M1
============================
mell QL M1
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_preserves_perm to *H5 H15 *H12.
Subgoal 4.2.2.2:
Variables: QL K L A B LL J K1 KK M M1
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H6 : mell QL K1 *
H7 : adj KK (par A B) L
H11 : adj KK A M
H15 : adj M B M1
H16 : perm K1 M1
============================
mell QL M1
Subgoal 5 is:
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < backchain IH.
Subgoal 5:
Variables: QL K L LL
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj LL bot K
H4 : mell QL LL *
============================
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_perm_full to *H2 *H3.
Subgoal 5:
Variables: QL K L LL KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : mell QL LL *
H5 : adj KK bot L
H6 : perm LL KK
============================
mell QL L
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < unfold 5.
Subgoal 5:
Variables: QL K L LL KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : mell QL LL *
H5 : adj KK bot L
H6 : perm LL KK
============================
exists LL, adj LL bot L /\ mell QL LL
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < witness KK.
Subgoal 5:
Variables: QL K L LL KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : mell QL LL *
H5 : adj KK bot L
H6 : perm LL KK
============================
adj KK bot L /\ mell QL KK
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < split.
Subgoal 5.1:
Variables: QL K L LL KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : mell QL LL *
H5 : adj KK bot L
H6 : perm LL KK
============================
adj KK bot L
Subgoal 5.2 is:
mell QL KK
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 5.2:
Variables: QL K L LL KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : mell QL LL *
H5 : adj KK bot L
H6 : perm LL KK
============================
mell QL KK
Subgoal 6 is:
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < backchain IH.
Subgoal 6:
Variables: QL L A
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm (bang A :: nil) L
H3 : mell QL (A :: nil) *
============================
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply perm_cons_1 to *H2.
Subgoal 6:
Variables: QL L A J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : mell QL (A :: nil) *
H4 : adj J (bang A) L
H5 : perm nil J
============================
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply perm_nil_1 to *H5.
Subgoal 6:
Variables: QL L A
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : mell QL (A :: nil) *
H4 : adj nil (bang A) L
============================
mell QL L
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < case H4.
Subgoal 6:
Variables: QL A
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : mell QL (A :: nil) *
H6 : is_fm (bang A)
H7 : is_list nil
============================
mell QL (bang A :: nil)
Subgoal 7 is:
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 7:
Variables: QL K L A LL QK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj LL (qm A) K
H4 : adj QL A QK
H5 : mell QK LL *
============================
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < apply adj_perm_full to *H2 *H3.
Subgoal 7:
Variables: QL K L A LL QK KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj QL A QK
H5 : mell QK LL *
H6 : adj KK (qm A) L
H7 : perm LL KK
============================
mell QL L
Subgoal 8 is:
mell QL L
mell_perm_l < unfold 7.
Subgoal 7:
Variables: QL K L A LL QK KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj QL A QK
H5 : mell QK LL *
H6 : adj KK (qm A) L
H7 : perm LL KK
============================
exists A LL, adj LL (qm A) L /\ (exists QK, adj QL A QK /\ mell QK LL)
Subgoal 8 is:
mell QL L
mell_perm_l < witness A, KK.
Subgoal 7:
Variables: QL K L A LL QK KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj QL A QK
H5 : mell QK LL *
H6 : adj KK (qm A) L
H7 : perm LL KK
============================
adj KK (qm A) L /\ (exists QK, adj QL A QK /\ mell QK KK)
Subgoal 8 is:
mell QL L
mell_perm_l < split.
Subgoal 7.1:
Variables: QL K L A LL QK KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj QL A QK
H5 : mell QK LL *
H6 : adj KK (qm A) L
H7 : perm LL KK
============================
adj KK (qm A) L
Subgoal 7.2 is:
exists QK, adj QL A QK /\ mell QK KK
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 7.2:
Variables: QL K L A LL QK KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj QL A QK
H5 : mell QK LL *
H6 : adj KK (qm A) L
H7 : perm LL KK
============================
exists QK, adj QL A QK /\ mell QK KK
Subgoal 8 is:
mell QL L
mell_perm_l < witness QK.
Subgoal 7.2:
Variables: QL K L A LL QK KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj QL A QK
H5 : mell QK LL *
H6 : adj KK (qm A) L
H7 : perm LL KK
============================
adj QL A QK /\ mell QK KK
Subgoal 8 is:
mell QL L
mell_perm_l < split.
Subgoal 7.2.1:
Variables: QL K L A LL QK KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj QL A QK
H5 : mell QK LL *
H6 : adj KK (qm A) L
H7 : perm LL KK
============================
adj QL A QK
Subgoal 7.2.2 is:
mell QK KK
Subgoal 8 is:
mell QL L
mell_perm_l < search.
Subgoal 7.2.2:
Variables: QL K L A LL QK KK
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H4 : adj QL A QK
H5 : mell QK LL *
H6 : adj KK (qm A) L
H7 : perm LL KK
============================
mell QK KK
Subgoal 8 is:
mell QL L
mell_perm_l < backchain IH.
Subgoal 8:
Variables: QL K L A QK J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj QK A QL
H4 : adj K A J
H5 : mell QL J *
============================
mell QL L
mell_perm_l < unfold 8.
Subgoal 8:
Variables: QL K L A QK J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj QK A QL
H4 : adj K A J
H5 : mell QL J *
============================
exists A QK, adj QK A QL /\ (exists J, adj L A J /\ mell QL J)
mell_perm_l < witness A, QK.
Subgoal 8:
Variables: QL K L A QK J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj QK A QL
H4 : adj K A J
H5 : mell QL J *
============================
adj QK A QL /\ (exists J, adj L A J /\ mell QL J)
mell_perm_l < split.
Subgoal 8.1:
Variables: QL K L A QK J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj QK A QL
H4 : adj K A J
H5 : mell QL J *
============================
adj QK A QL
Subgoal 8.2 is:
exists J, adj L A J /\ mell QL J
mell_perm_l < search.
Subgoal 8.2:
Variables: QL K L A QK J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj QK A QL
H4 : adj K A J
H5 : mell QL J *
============================
exists J, adj L A J /\ mell QL J
mell_perm_l < apply adj_2_is_o to H3.
Subgoal 8.2:
Variables: QL K L A QK J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj QK A QL
H4 : adj K A J
H5 : mell QL J *
H6 : is_fm A
============================
exists J, adj L A J /\ mell QL J
mell_perm_l < apply perm_2_is_list to H2.
Subgoal 8.2:
Variables: QL K L A QK J
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj QK A QL
H4 : adj K A J
H5 : mell QL J *
H6 : is_fm A
H7 : is_list L
============================
exists J, adj L A J /\ mell QL J
mell_perm_l < apply adj_exists to *H6 *H7.
Subgoal 8.2:
Variables: QL K L A QK J M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H2 : perm K L
H3 : adj QK A QL
H4 : adj K A J
H5 : mell QL J *
H8 : adj L A M
============================
exists J, adj L A J /\ mell QL J
mell_perm_l < apply adj_preserves_perm to *H4 H8 *H2.
Subgoal 8.2:
Variables: QL K L A QK J M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : adj QK A QL
H5 : mell QL J *
H8 : adj L A M
H9 : perm J M
============================
exists J, adj L A J /\ mell QL J
mell_perm_l < witness M.
Subgoal 8.2:
Variables: QL K L A QK J M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : adj QK A QL
H5 : mell QL J *
H8 : adj L A M
H9 : perm J M
============================
adj L A M /\ mell QL M
mell_perm_l < split.
Subgoal 8.2.1:
Variables: QL K L A QK J M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : adj QK A QL
H5 : mell QL J *
H8 : adj L A M
H9 : perm J M
============================
adj L A M
Subgoal 8.2.2 is:
mell QL M
mell_perm_l < search.
Subgoal 8.2.2:
Variables: QL K L A QK J M
IH : forall QL K L, mell QL K * -> perm K L -> mell QL L
H3 : adj QK A QL
H5 : mell QL J *
H8 : adj L A M
H9 : perm J M
============================
mell QL M
mell_perm_l < backchain IH.
Proof completed.
Abella < Theorem bot_inv :
forall QL J L, mell QL L -> adj J bot L -> mell QL J.
============================
forall QL J L, mell QL L -> adj J bot L -> mell QL J
bot_inv < induction on 1.
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
============================
forall QL J L, mell QL L @ -> adj J bot L -> mell QL J
bot_inv < intros.
Variables: QL J L
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H1 : mell QL L @
H2 : adj J bot L
============================
mell QL J
bot_inv < case H1.
Subgoal 1:
Variables: QL J L A
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : is_list QL
H4 : adj (natom A :: nil) (atom A) L
============================
mell QL J
Subgoal 2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H4.
Subgoal 1.1:
Variables: QL J A
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot (atom A :: natom A :: nil)
H3 : is_list QL
H5 : is_fm (atom A)
H6 : is_list (natom A :: nil)
============================
mell QL J
Subgoal 1.2 is:
mell QL J
Subgoal 2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H2.
Subgoal 1.1:
Variables: QL A K
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H3 : is_list QL
H5 : is_fm (atom A)
H6 : is_list (natom A :: nil)
H7 : is_fm (atom A)
H8 : adj K bot (natom A :: nil)
============================
mell QL (atom A :: K)
Subgoal 1.2 is:
mell QL J
Subgoal 2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H8.
Subgoal 1.1:
Variables: QL A K1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H3 : is_list QL
H5 : is_fm (atom A)
H6 : is_list (natom A :: nil)
H7 : is_fm (atom A)
H9 : is_fm (natom A)
H10 : adj K1 bot nil
============================
mell QL (atom A :: natom A :: K1)
Subgoal 1.2 is:
mell QL J
Subgoal 2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H10.
Subgoal 1.2:
Variables: QL J A L1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot (natom A :: L1)
H3 : is_list QL
H5 : is_fm (natom A)
H6 : adj nil (atom A) L1
============================
mell QL J
Subgoal 2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H2.
Subgoal 1.2:
Variables: QL A L1 K
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H3 : is_list QL
H5 : is_fm (natom A)
H6 : adj nil (atom A) L1
H7 : is_fm (natom A)
H8 : adj K bot L1
============================
mell QL (natom A :: K)
Subgoal 2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H6.
Subgoal 1.2:
Variables: QL A K
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H3 : is_list QL
H5 : is_fm (natom A)
H7 : is_fm (natom A)
H8 : adj K bot (atom A :: nil)
H9 : is_fm (atom A)
H10 : is_list nil
============================
mell QL (natom A :: K)
Subgoal 2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H8.
Subgoal 1.2:
Variables: QL A K1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H3 : is_list QL
H5 : is_fm (natom A)
H7 : is_fm (natom A)
H9 : is_fm (atom A)
H10 : is_list nil
H11 : is_fm (atom A)
H12 : adj K1 bot nil
============================
mell QL (natom A :: atom A :: K1)
Subgoal 2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H12.
Subgoal 2:
Variables: QL J L A B LL JJ KK J1 K
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mell QL J1 *
H7 : adj KK B K
H8 : mell QL K *
============================
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 2:
Variables: QL J L A B LL JJ KK J1 K
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mell QL J1 *
H7 : adj KK B K
H8 : mell QL K *
H9 : bot = tens A B /\ perm J LL \/ (exists KK, adj KK bot LL)
============================
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H9.
Subgoal 2:
Variables: QL J L A B LL JJ KK J1 K KK1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H4 : merge JJ KK LL
H5 : adj JJ A J1
H6 : mell QL J1 *
H7 : adj KK B K
H8 : mell QL K *
H10 : adj KK1 bot LL
============================
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply merge_unadj_3 to *H4 H10.
Subgoal 2:
Variables: QL J L A B LL JJ KK J1 K KK1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mell QL J1 *
H7 : adj KK B K
H8 : mell QL K *
H10 : adj KK1 bot LL
H11 : (exists JJ1, adj JJ1 bot JJ /\ merge JJ1 KK KK1) \/
(exists KK2, adj KK2 bot KK /\ merge JJ KK2 KK1)
============================
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H11.
Subgoal 2.1:
Variables: QL J L A B LL JJ KK J1 K KK1 JJ1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mell QL J1 *
H7 : adj KK B K
H8 : mell QL K *
H10 : adj KK1 bot LL
H12 : adj JJ1 bot JJ
H13 : merge JJ1 KK KK1
============================
mell QL J
Subgoal 2.2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_swap to *H12 *H5.
Subgoal 2.1:
Variables: QL J L A B LL JJ KK J1 K KK1 JJ1 U
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H6 : mell QL J1 *
H7 : adj KK B K
H8 : mell QL K *
H10 : adj KK1 bot LL
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H15 : adj U bot J1
============================
mell QL J
Subgoal 2.2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply IH to *H6 *H15.
Subgoal 2.1:
Variables: QL J L A B LL JJ KK J1 K KK1 JJ1 U
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H7 : adj KK B K
H8 : mell QL K *
H10 : adj KK1 bot LL
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H16 : mell QL U
============================
mell QL J
Subgoal 2.2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_swap to *H10 *H3.
Subgoal 2.1:
Variables: QL J L A B LL JJ KK J1 K KK1 JJ1 U U1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H7 : adj KK B K
H8 : mell QL K *
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H16 : mell QL U
H17 : adj KK1 (tens A B) U1
H18 : adj U1 bot L
============================
mell QL J
Subgoal 2.2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_same_result to *H18 *H2.
Subgoal 2.1:
Variables: QL J L A B LL JJ KK J1 K KK1 JJ1 U U1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H7 : adj KK B K
H8 : mell QL K *
H13 : merge JJ1 KK KK1
H14 : adj JJ1 A U
H16 : mell QL U
H17 : adj KK1 (tens A B) U1
H19 : perm U1 J
============================
mell QL J
Subgoal 2.2 is:
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < backchain mell_perm_l with K = U1.
Subgoal 2.2:
Variables: QL J L A B LL JJ KK J1 K KK1 KK2
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mell QL J1 *
H7 : adj KK B K
H8 : mell QL K *
H10 : adj KK1 bot LL
H12 : adj KK2 bot KK
H13 : merge JJ KK2 KK1
============================
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_swap to *H12 *H7.
Subgoal 2.2:
Variables: QL J L A B LL JJ KK J1 K KK1 KK2 U
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mell QL J1 *
H8 : mell QL K *
H10 : adj KK1 bot LL
H13 : merge JJ KK2 KK1
H14 : adj KK2 B U
H15 : adj U bot K
============================
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply IH to *H8 *H15.
Subgoal 2.2:
Variables: QL J L A B LL JJ KK J1 K KK1 KK2 U
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (tens A B) L
H5 : adj JJ A J1
H6 : mell QL J1 *
H10 : adj KK1 bot LL
H13 : merge JJ KK2 KK1
H14 : adj KK2 B U
H16 : mell QL U
============================
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_swap to *H10 *H3.
Subgoal 2.2:
Variables: QL J L A B LL JJ KK J1 K KK1 KK2 U U1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H5 : adj JJ A J1
H6 : mell QL J1 *
H13 : merge JJ KK2 KK1
H14 : adj KK2 B U
H16 : mell QL U
H17 : adj KK1 (tens A B) U1
H18 : adj U1 bot L
============================
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_same_result to *H18 *H2.
Subgoal 2.2:
Variables: QL J L A B LL JJ KK J1 K KK1 KK2 U U1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H5 : adj JJ A J1
H6 : mell QL J1 *
H13 : merge JJ KK2 KK1
H14 : adj KK2 B U
H16 : mell QL U
H17 : adj KK1 (tens A B) U1
H19 : perm U1 J
============================
mell QL J
Subgoal 3 is:
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < backchain mell_perm_l with K = U1.
Subgoal 3:
Variables: QL J
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot (one :: nil)
H3 : is_list QL
============================
mell QL J
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H2.
Subgoal 3:
Variables: QL K
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H3 : is_list QL
H4 : is_fm one
H5 : adj K bot nil
============================
mell QL (one :: K)
Subgoal 4 is:
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H5.
Subgoal 4:
Variables: QL J L A B LL J1 K
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H6 : mell QL K *
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 4:
Variables: QL J L A B LL J1 K
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H6 : mell QL K *
H7 : bot = par A B /\ perm J LL \/ (exists KK, adj KK bot LL)
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H7.
Subgoal 4:
Variables: QL J L A B LL J1 K KK
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (par A B) L
H4 : adj LL A J1
H5 : adj J1 B K
H6 : mell QL K *
H8 : adj KK bot LL
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_swap to H8 *H4.
Subgoal 4:
Variables: QL J L A B LL J1 K KK U
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (par A B) L
H5 : adj J1 B K
H6 : mell QL K *
H8 : adj KK bot LL
H9 : adj KK A U
H10 : adj U bot J1
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_swap to *H10 *H5.
Subgoal 4:
Variables: QL J L A B LL J1 K KK U U1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (par A B) L
H6 : mell QL K *
H8 : adj KK bot LL
H9 : adj KK A U
H11 : adj U B U1
H12 : adj U1 bot K
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply IH to *H6 *H12.
Subgoal 4:
Variables: QL J L A B LL J1 K KK U U1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (par A B) L
H8 : adj KK bot LL
H9 : adj KK A U
H11 : adj U B U1
H13 : mell QL U1
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_swap to *H8 *H3.
Subgoal 4:
Variables: QL J L A B LL J1 K KK U U1 U2
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H9 : adj KK A U
H11 : adj U B U1
H13 : mell QL U1
H14 : adj KK (par A B) U2
H15 : adj U2 bot L
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_same_result to *H15 *H2.
Subgoal 4:
Variables: QL J L A B LL J1 K KK U U1 U2
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H9 : adj KK A U
H11 : adj U B U1
H13 : mell QL U1
H14 : adj KK (par A B) U2
H16 : perm U2 J
============================
mell QL J
Subgoal 5 is:
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < backchain mell_perm_l with K = U2.
Subgoal 5:
Variables: QL J L LL
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL bot L
H4 : mell QL LL *
============================
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_same_result to *H3 *H2.
Subgoal 5:
Variables: QL J L LL
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H4 : mell QL LL *
H5 : perm LL J
============================
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply mell_is to H4.
Subgoal 5:
Variables: QL J L LL
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H4 : mell QL LL *
H5 : perm LL J
H6 : is_list QL
H7 : is_list LL
============================
mell QL J
Subgoal 6 is:
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < backchain mell_perm_l with K = LL.
Subgoal 6:
Variables: QL J A
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot (bang A :: nil)
H3 : mell QL (A :: nil) *
============================
mell QL J
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H2.
Subgoal 6:
Variables: QL A K
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H3 : mell QL (A :: nil) *
H4 : is_fm (bang A)
H5 : adj K bot nil
============================
mell QL (bang A :: K)
Subgoal 7 is:
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H5.
Subgoal 7:
Variables: QL J L A LL QK
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (qm A) L
H4 : adj QL A QK
H5 : mell QK LL *
============================
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_same_result_diff to H2 H3.
Subgoal 7:
Variables: QL J L A LL QK
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (qm A) L
H4 : adj QL A QK
H5 : mell QK LL *
H6 : bot = qm A /\ perm J LL \/ (exists KK, adj KK bot LL)
============================
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < case H6.
Subgoal 7:
Variables: QL J L A LL QK KK
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (qm A) L
H4 : adj QL A QK
H5 : mell QK LL *
H7 : adj KK bot LL
============================
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply IH to *H5 H7.
Subgoal 7:
Variables: QL J L A LL QK KK
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (qm A) L
H4 : adj QL A QK
H7 : adj KK bot LL
H8 : mell QK KK
============================
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_swap to H7 H3.
Subgoal 7:
Variables: QL J L A LL QK KK U
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (qm A) L
H4 : adj QL A QK
H7 : adj KK bot LL
H8 : mell QK KK
H9 : adj KK (qm A) U
H10 : adj U bot L
============================
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < apply adj_same_result to H10 H2.
Subgoal 7:
Variables: QL J L A LL QK KK U
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj LL (qm A) L
H4 : adj QL A QK
H7 : adj KK bot LL
H8 : mell QK KK
H9 : adj KK (qm A) U
H10 : adj U bot L
H11 : perm U J
============================
mell QL J
Subgoal 8 is:
mell QL J
bot_inv < backchain mell_perm_l with K = U.
Subgoal 8:
Variables: QL J L A QK J1
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj QK A QL
H4 : adj L A J1
H5 : mell QL J1 *
============================
mell QL J
bot_inv < apply adj_swap to H2 H4.
Subgoal 8:
Variables: QL J L A QK J1 U
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj QK A QL
H4 : adj L A J1
H5 : mell QL J1 *
H6 : adj J A U
H7 : adj U bot J1
============================
mell QL J
bot_inv < apply IH to H5 H7.
Subgoal 8:
Variables: QL J L A QK J1 U
IH : forall QL J L, mell QL L * -> adj J bot L -> mell QL J
H2 : adj J bot L
H3 : adj QK A QL
H4 : adj L A J1
H5 : mell QL J1 *
H6 : adj J A U
H7 : adj U bot J1
H8 : mell QL U
============================
mell QL J
bot_inv < search.
Proof completed.
Abella < Theorem par_inv :
forall A B QL L J KA KAB, mell QL L -> adj J (par A B) L -> adj J A KA ->
adj KA B KAB -> mell QL KAB.
============================
forall A B QL L J KA KAB, mell QL L -> adj J (par A B) L -> adj J A KA ->
adj KA B KAB -> mell QL KAB
par_inv < induction on 1.
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
============================
forall A B QL L J KA KAB, mell QL L @ -> adj J (par A B) L -> adj J A KA ->
adj KA B KAB -> mell QL KAB
par_inv < intros.
Variables: A B QL L J KA KAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H1 : mell QL L @
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
============================
mell QL KAB
par_inv < case H1.
Subgoal 1:
Variables: A B QL L J KA KAB A1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : is_list QL
H6 : adj (natom A1 :: nil) (atom A1) L
============================
mell QL KAB
Subgoal 2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H6.
Subgoal 1.1:
Variables: A B QL J KA KAB A1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) (atom A1 :: natom A1 :: nil)
H3 : adj J A KA
H4 : adj KA B KAB
H5 : is_list QL
H7 : is_fm (atom A1)
H8 : is_list (natom A1 :: nil)
============================
mell QL KAB
Subgoal 1.2 is:
mell QL KAB
Subgoal 2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H2.
Subgoal 1.1:
Variables: A B QL KA KAB A1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj (atom A1 :: K) A KA
H4 : adj KA B KAB
H5 : is_list QL
H7 : is_fm (atom A1)
H8 : is_list (natom A1 :: nil)
H9 : is_fm (atom A1)
H10 : adj K (par A B) (natom A1 :: nil)
============================
mell QL KAB
Subgoal 1.2 is:
mell QL KAB
Subgoal 2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H10.
Subgoal 1.1:
Variables: A B QL KA KAB A1 K1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj (atom A1 :: natom A1 :: K1) A KA
H4 : adj KA B KAB
H5 : is_list QL
H7 : is_fm (atom A1)
H8 : is_list (natom A1 :: nil)
H9 : is_fm (atom A1)
H11 : is_fm (natom A1)
H12 : adj K1 (par A B) nil
============================
mell QL KAB
Subgoal 1.2 is:
mell QL KAB
Subgoal 2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H12.
Subgoal 1.2:
Variables: A B QL J KA KAB A1 L1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) (natom A1 :: L1)
H3 : adj J A KA
H4 : adj KA B KAB
H5 : is_list QL
H7 : is_fm (natom A1)
H8 : adj nil (atom A1) L1
============================
mell QL KAB
Subgoal 2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H2.
Subgoal 1.2:
Variables: A B QL KA KAB A1 L1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj (natom A1 :: K) A KA
H4 : adj KA B KAB
H5 : is_list QL
H7 : is_fm (natom A1)
H8 : adj nil (atom A1) L1
H9 : is_fm (natom A1)
H10 : adj K (par A B) L1
============================
mell QL KAB
Subgoal 2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H8.
Subgoal 1.2:
Variables: A B QL KA KAB A1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj (natom A1 :: K) A KA
H4 : adj KA B KAB
H5 : is_list QL
H7 : is_fm (natom A1)
H9 : is_fm (natom A1)
H10 : adj K (par A B) (atom A1 :: nil)
H11 : is_fm (atom A1)
H12 : is_list nil
============================
mell QL KAB
Subgoal 2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H10.
Subgoal 1.2:
Variables: A B QL KA KAB A1 K1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj (natom A1 :: atom A1 :: K1) A KA
H4 : adj KA B KAB
H5 : is_list QL
H7 : is_fm (natom A1)
H9 : is_fm (natom A1)
H11 : is_fm (atom A1)
H12 : is_list nil
H13 : is_fm (atom A1)
H14 : adj K1 (par A B) nil
============================
mell QL KAB
Subgoal 2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H14.
Subgoal 2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL (tens A1 B1) L
H6 : merge JJ KK LL
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_same_result_diff to H2 H5.
Subgoal 2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL (tens A1 B1) L
H6 : merge JJ KK LL
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H11 : par A B = tens A1 B1 /\ perm J LL \/ (exists KK, adj KK (par A B) LL)
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H11.
Subgoal 2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL (tens A1 B1) L
H6 : merge JJ KK LL
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H12 : adj KK1 (par A B) LL
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to H12 *H5.
Subgoal 2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H6 : merge JJ KK LL
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H12 : adj KK1 (par A B) LL
H13 : adj KK1 (tens A1 B1) U
H14 : adj U (par A B) L
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_same_result to *H14 *H2.
Subgoal 2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H6 : merge JJ KK LL
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H12 : adj KK1 (par A B) LL
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply merge_unadj_3 to *H6 *H12.
Subgoal 2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H16 : (exists JJ1, adj JJ1 (par A B) JJ /\ merge JJ1 KK KK1) \/
(exists KK2, adj KK2 (par A B) KK /\ merge JJ KK2 KK1)
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H16.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H17 : adj JJ1 (par A B) JJ
H18 : merge JJ1 KK KK1
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H17 *H7.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists UA UAB, adj U1 A UA /\ adj UA B UAB.
Subgoal 2.1.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H3.
Subgoal 2.1.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
H21 : is_fm A
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_1_is_list to H20.
Subgoal 2.1.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
H21 : is_fm A
H22 : is_list U1
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H21 H22.
Subgoal 2.1.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
H21 : is_fm A
H22 : is_list U1
H23 : adj U1 A M
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H23.
Subgoal 2.1.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
H21 : is_fm A
H22 : is_list U1
H23 : adj U1 A M
H24 : is_list M
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H4.
Subgoal 2.1.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
H21 : is_fm A
H22 : is_list U1
H23 : adj U1 A M
H24 : is_list M
H25 : is_fm B
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H25 H24.
Subgoal 2.1.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 M M1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
H21 : is_fm A
H22 : is_list U1
H23 : adj U1 A M
H24 : is_list M
H25 : is_fm B
H26 : adj M B M1
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
Ht : exists UA UAB, adj U1 A UA /\ adj UA B UAB
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H20 : adj U1 (par A B) J1
H21 : adj U1 A UA
H22 : adj UA B UAB
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply IH to *H8 *H20 H21 H22.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H19 : adj JJ1 A1 U1
H21 : adj U1 A UA
H22 : adj UA B UAB
H23 : mell QL UAB
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H19 *H21.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H22 : adj UA B UAB
H23 : mell QL UAB
H24 : adj JJ1 A U2
H25 : adj U2 A1 UA
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H25 *H22.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge U3 KK KKAB.
Subgoal 2.1.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge U3 KK KKAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H3.
Subgoal 2.1.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : is_fm A
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge U3 KK KKAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply merge_3_is_list to H18.
Subgoal 2.1.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : is_fm A
H29 : is_list KK1
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge U3 KK KKAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H28 H29.
Subgoal 2.1.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : is_fm A
H29 : is_list KK1
H30 : adj KK1 A M
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge U3 KK KKAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H30.
Subgoal 2.1.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : is_fm A
H29 : is_list KK1
H30 : adj KK1 A M
H31 : is_list M
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge U3 KK KKAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H4.
Subgoal 2.1.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : is_fm A
H29 : is_list KK1
H30 : adj KK1 A M
H31 : is_list M
H32 : is_fm B
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge U3 KK KKAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H32 H31.
Subgoal 2.1.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3 M
M1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : is_fm A
H29 : is_list KK1
H30 : adj KK1 A M
H31 : is_list M
H32 : is_fm B
H33 : adj M B M1
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge U3 KK KKAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
Ht : exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge U3 KK KKAB
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists KKABU, adj KKAB (tens A1 B1) KKABU.
Subgoal 2.1.3:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
============================
exists KKABU, adj KKAB (tens A1 B1) KKABU
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H13.
Subgoal 2.1.3:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
H31 : is_fm (tens A1 B1)
============================
exists KKABU, adj KKAB (tens A1 B1) KKABU
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply merge_3_is_list to H30.
Subgoal 2.1.3:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
H31 : is_fm (tens A1 B1)
H32 : is_list KKAB
============================
exists KKABU, adj KKAB (tens A1 B1) KKABU
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H31 H32.
Subgoal 2.1.3:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
H31 : is_fm (tens A1 B1)
H32 : is_list KKAB
H33 : adj KKAB (tens A1 B1) M
============================
exists KKABU, adj KKAB (tens A1 B1) KKABU
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
Ht : exists KKABU, adj KKAB (tens A1 B1) KKABU
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB KKABU
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
H31 : adj KKAB (tens A1 B1) KKABU
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < assert perm KKABU KAB.
Subgoal 2.1.4:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB KKABU
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
H31 : adj KKAB (tens A1 B1) KKABU
============================
perm KKABU KAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_perm_full to *H15 *H13.
Subgoal 2.1.4:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB KKABU KK2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
H31 : adj KKAB (tens A1 B1) KKABU
H32 : adj KK2 (tens A1 B1) J
H33 : perm KK1 KK2
============================
perm KKABU KAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H32 *H3.
Subgoal 2.1.4:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB KKABU KK2 U4
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
H31 : adj KKAB (tens A1 B1) KKABU
H33 : perm KK1 KK2
H34 : adj KK2 A U4
H35 : adj U4 (tens A1 B1) KA
============================
perm KKABU KAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H35 *H4.
Subgoal 2.1.4:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB KKABU KK2 U4 U5
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H9 : adj KK B1 K
H10 : mell QL K *
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
H31 : adj KKAB (tens A1 B1) KKABU
H33 : perm KK1 KK2
H34 : adj KK2 A U4
H36 : adj U4 B U5
H37 : adj U5 (tens A1 B1) KAB
============================
perm KKABU KAB
Subgoal 2.1 is:
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U JJ1 U1 UA UAB U2 U3
KKA KKAB KKABU
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ1 KK KK1
H23 : mell QL UAB
H24 : adj JJ1 A U2
H26 : adj U2 B U3
H27 : adj U3 A1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge U3 KK KKAB
H31 : adj KKAB (tens A1 B1) KKABU
H32 : perm KKABU KAB
============================
mell QL KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < backchain mell_perm_l with K = KKABU.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H9 : adj KK B1 K
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H17 : adj KK2 (par A B) KK
H18 : merge JJ KK2 KK1
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H17 *H9.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists UA UAB, adj U1 A UA /\ adj UA B UAB.
Subgoal 2.2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H3.
Subgoal 2.2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
H21 : is_fm A
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_1_is_list to H20.
Subgoal 2.2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
H21 : is_fm A
H22 : is_list U1
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H21 H22.
Subgoal 2.2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
H21 : is_fm A
H22 : is_list U1
H23 : adj U1 A M
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H23.
Subgoal 2.2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
H21 : is_fm A
H22 : is_list U1
H23 : adj U1 A M
H24 : is_list M
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H4.
Subgoal 2.2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
H21 : is_fm A
H22 : is_list U1
H23 : adj U1 A M
H24 : is_list M
H25 : is_fm B
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H25 H24.
Subgoal 2.2.1:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 M M1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
H21 : is_fm A
H22 : is_list U1
H23 : adj U1 A M
H24 : is_list M
H25 : is_fm B
H26 : adj M B M1
============================
exists UA UAB, adj U1 A UA /\ adj UA B UAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
Ht : exists UA UAB, adj U1 A UA /\ adj UA B UAB
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H10 : mell QL K *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H20 : adj U1 (par A B) K
H21 : adj U1 A UA
H22 : adj UA B UAB
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply IH to *H10 *H20 H21 H22.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H19 : adj KK2 B1 U1
H21 : adj U1 A UA
H22 : adj UA B UAB
H23 : mell QL UAB
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H19 *H21.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H22 : adj UA B UAB
H23 : mell QL UAB
H24 : adj KK2 A U2
H25 : adj U2 B1 UA
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H25 *H22.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge JJ U3 KKAB.
Subgoal 2.2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge JJ U3 KKAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H3.
Subgoal 2.2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : is_fm A
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge JJ U3 KKAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply merge_3_is_list to H18.
Subgoal 2.2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : is_fm A
H29 : is_list KK1
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge JJ U3 KKAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H28 H29.
Subgoal 2.2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : is_fm A
H29 : is_list KK1
H30 : adj KK1 A M
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge JJ U3 KKAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H30.
Subgoal 2.2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : is_fm A
H29 : is_list KK1
H30 : adj KK1 A M
H31 : is_list M
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge JJ U3 KKAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H4.
Subgoal 2.2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : is_fm A
H29 : is_list KK1
H30 : adj KK1 A M
H31 : is_list M
H32 : is_fm B
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge JJ U3 KKAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H32 H31.
Subgoal 2.2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3 M
M1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : is_fm A
H29 : is_list KK1
H30 : adj KK1 A M
H31 : is_list M
H32 : is_fm B
H33 : adj M B M1
============================
exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge JJ U3 KKAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
Ht : exists KKA KKAB, adj KK1 A KKA /\ adj KKA B KKAB /\ merge JJ U3 KKAB
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists KKABU, adj KKAB (tens A1 B1) KKABU.
Subgoal 2.2.3:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
============================
exists KKABU, adj KKAB (tens A1 B1) KKABU
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H13.
Subgoal 2.2.3:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
H31 : is_fm (tens A1 B1)
============================
exists KKABU, adj KKAB (tens A1 B1) KKABU
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply merge_3_is_list to H30.
Subgoal 2.2.3:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
H31 : is_fm (tens A1 B1)
H32 : is_list KKAB
============================
exists KKABU, adj KKAB (tens A1 B1) KKABU
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H31 H32.
Subgoal 2.2.3:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
H31 : is_fm (tens A1 B1)
H32 : is_list KKAB
H33 : adj KKAB (tens A1 B1) M
============================
exists KKABU, adj KKAB (tens A1 B1) KKABU
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
Ht : exists KKABU, adj KKAB (tens A1 B1) KKABU
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB KKABU
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
H31 : adj KKAB (tens A1 B1) KKABU
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < assert perm KKABU KAB.
Subgoal 2.2.4:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB KKABU
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
H31 : adj KKAB (tens A1 B1) KKABU
============================
perm KKABU KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_perm_full to *H15 *H13.
Subgoal 2.2.4:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB KKABU KK3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
H31 : adj KKAB (tens A1 B1) KKABU
H32 : adj KK3 (tens A1 B1) J
H33 : perm KK1 KK3
============================
perm KKABU KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H32 *H3.
Subgoal 2.2.4:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB KKABU KK3 U4
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
H31 : adj KKAB (tens A1 B1) KKABU
H33 : perm KK1 KK3
H34 : adj KK3 A U4
H35 : adj U4 (tens A1 B1) KA
============================
perm KKABU KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H35 *H4.
Subgoal 2.2.4:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB KKABU KK3 U4 U5
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
H31 : adj KKAB (tens A1 B1) KKABU
H33 : perm KK1 KK3
H34 : adj KK3 A U4
H36 : adj U4 B U5
H37 : adj U5 (tens A1 B1) KAB
============================
perm KKABU KAB
Subgoal 2.2 is:
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 2.2:
Variables: A B QL L J KA KAB A1 B1 LL JJ KK J1 K KK1 U KK2 U1 UA UAB U2 U3
KKA KKAB KKABU
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj JJ A1 J1
H8 : mell QL J1 *
H13 : adj KK1 (tens A1 B1) U
H15 : perm U J
H18 : merge JJ KK2 KK1
H23 : mell QL UAB
H24 : adj KK2 A U2
H26 : adj U2 B U3
H27 : adj U3 B1 UAB
H28 : adj KK1 A KKA
H29 : adj KKA B KKAB
H30 : merge JJ U3 KKAB
H31 : adj KKAB (tens A1 B1) KKABU
H32 : perm KKABU KAB
============================
mell QL KAB
Subgoal 3 is:
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < backchain mell_perm_l with K = KKABU.
Subgoal 3:
Variables: A B QL J KA KAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) (one :: nil)
H3 : adj J A KA
H4 : adj KA B KAB
H5 : is_list QL
============================
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H2.
Subgoal 3:
Variables: A B QL KA KAB K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj (one :: K) A KA
H4 : adj KA B KAB
H5 : is_list QL
H6 : is_fm one
H7 : adj K (par A B) nil
============================
mell QL KAB
Subgoal 4 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H7.
Subgoal 4:
Variables: A B QL L J KA KAB A1 B1 LL J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL (par A1 B1) L
H6 : adj LL A1 J1
H7 : adj J1 B1 K
H8 : mell QL K *
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_same_result_diff to H2 H5.
Subgoal 4:
Variables: A B QL L J KA KAB A1 B1 LL J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL (par A1 B1) L
H6 : adj LL A1 J1
H7 : adj J1 B1 K
H8 : mell QL K *
H9 : par A B = par A1 B1 /\ perm J LL \/ (exists KK, adj KK (par A B) LL)
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H9.
Subgoal 4.1:
Variables: QL L J KA KAB A1 B1 LL J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A1 B1) L
H3 : adj J A1 KA
H4 : adj KA B1 KAB
H5 : adj LL (par A1 B1) L
H6 : adj LL A1 J1
H7 : adj J1 B1 K
H8 : mell QL K *
H10 : perm J LL
============================
mell QL KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply perm_sym to *H10.
Subgoal 4.1:
Variables: QL L J KA KAB A1 B1 LL J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A1 B1) L
H3 : adj J A1 KA
H4 : adj KA B1 KAB
H5 : adj LL (par A1 B1) L
H6 : adj LL A1 J1
H7 : adj J1 B1 K
H8 : mell QL K *
H11 : perm LL J
============================
mell QL KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_preserves_perm to *H6 *H3 *H11.
Subgoal 4.1:
Variables: QL L J KA KAB A1 B1 LL J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A1 B1) L
H4 : adj KA B1 KAB
H5 : adj LL (par A1 B1) L
H7 : adj J1 B1 K
H8 : mell QL K *
H12 : perm J1 KA
============================
mell QL KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_preserves_perm to *H7 *H4 *H12.
Subgoal 4.1:
Variables: QL L J KA KAB A1 B1 LL J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A1 B1) L
H5 : adj LL (par A1 B1) L
H8 : mell QL K *
H13 : perm K KAB
============================
mell QL KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply mell_perm_l to *H8 *H13.
Subgoal 4.1:
Variables: QL L J KA KAB A1 B1 LL J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A1 B1) L
H5 : adj LL (par A1 B1) L
H14 : mell QL KAB
============================
mell QL KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply mell_is to H14.
Subgoal 4.1:
Variables: QL L J KA KAB A1 B1 LL J1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A1 B1) L
H5 : adj LL (par A1 B1) L
H14 : mell QL KAB
H15 : is_list QL
H16 : is_list KAB
============================
mell QL KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL (par A1 B1) L
H6 : adj LL A1 J1
H7 : adj J1 B1 K
H8 : mell QL K *
H10 : adj KK (par A B) LL
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to H10 *H5.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H6 : adj LL A1 J1
H7 : adj J1 B1 K
H8 : mell QL K *
H10 : adj KK (par A B) LL
H11 : adj KK (par A1 B1) U
H12 : adj U (par A B) L
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_same_result to *H12 *H2.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H6 : adj LL A1 J1
H7 : adj J1 B1 K
H8 : mell QL K *
H10 : adj KK (par A B) LL
H11 : adj KK (par A1 B1) U
H13 : perm U J
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H10 *H6.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H7 : adj J1 B1 K
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H15 : adj U1 (par A B) J1
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H15 *H7.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists UA UAB, adj U2 A UA /\ adj UA B UAB.
Subgoal 4.2.1:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
============================
exists UA UAB, adj U2 A UA /\ adj UA B UAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H17.
Subgoal 4.2.1:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
H18 : is_fm (par A B)
============================
exists UA UAB, adj U2 A UA /\ adj UA B UAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H18.
Subgoal 4.2.1:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
H19 : is_fm A
H20 : is_fm B
============================
exists UA UAB, adj U2 A UA /\ adj UA B UAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_1_is_list to H17.
Subgoal 4.2.1:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
H19 : is_fm A
H20 : is_fm B
H21 : is_list U2
============================
exists UA UAB, adj U2 A UA /\ adj UA B UAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H19 H21.
Subgoal 4.2.1:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
H19 : is_fm A
H20 : is_fm B
H21 : is_list U2
H22 : adj U2 A M
============================
exists UA UAB, adj U2 A UA /\ adj UA B UAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H22.
Subgoal 4.2.1:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
H19 : is_fm A
H20 : is_fm B
H21 : is_list U2
H22 : adj U2 A M
H23 : is_list M
============================
exists UA UAB, adj U2 A UA /\ adj UA B UAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H20 H23.
Subgoal 4.2.1:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 M M1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
H19 : is_fm A
H20 : is_fm B
H21 : is_list U2
H22 : adj U2 A M
H23 : is_list M
H24 : adj M B M1
============================
exists UA UAB, adj U2 A UA /\ adj UA B UAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
Ht : exists UA UAB, adj U2 A UA /\ adj UA B UAB
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H8 : mell QL K *
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H17 : adj U2 (par A B) K
H18 : adj U2 A UA
H19 : adj UA B UAB
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply IH to *H8 *H17 H18 H19.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H16 : adj U1 B1 U2
H18 : adj U2 A UA
H19 : adj UA B UAB
H20 : mell QL UAB
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H16 *H18.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H19 : adj UA B UAB
H20 : mell QL UAB
H21 : adj U1 A U3
H22 : adj U3 B1 UA
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H22 *H19.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H14 : adj KK A1 U1
H20 : mell QL UAB
H21 : adj U1 A U3
H23 : adj U3 B U4
H24 : adj U4 B1 UAB
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H14 *H21.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H23 : adj U3 B U4
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H26 : adj U5 A1 U3
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H26 *H23.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists V, adj U6 (par A1 B1) V.
Subgoal 4.2.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
============================
exists V, adj U6 (par A1 B1) V
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H11.
Subgoal 4.2.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
H29 : is_fm (par A1 B1)
============================
exists V, adj U6 (par A1 B1) V
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_1_is_list to H28.
Subgoal 4.2.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
H29 : is_fm (par A1 B1)
H30 : is_list U6
============================
exists V, adj U6 (par A1 B1) V
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H29 H30.
Subgoal 4.2.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
H29 : is_fm (par A1 B1)
H30 : is_list U6
H31 : adj U6 (par A1 B1) M
============================
exists V, adj U6 (par A1 B1) V
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
Ht : exists V, adj U6 (par A1 B1) V
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6 V
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
H29 : adj U6 (par A1 B1) V
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < assert perm V KAB.
Subgoal 4.2.3:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6 V
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
H29 : adj U6 (par A1 B1) V
============================
perm V KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_perm_full to *H13 *H11.
Subgoal 4.2.3:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6 V
KK1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
H29 : adj U6 (par A1 B1) V
H30 : adj KK1 (par A1 B1) J
H31 : perm KK KK1
============================
perm V KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H30 *H3.
Subgoal 4.2.3:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6 V
KK1 U7
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H4 : adj KA B KAB
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
H29 : adj U6 (par A1 B1) V
H31 : perm KK KK1
H32 : adj KK1 A U7
H33 : adj U7 (par A1 B1) KA
============================
perm V KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H33 *H4.
Subgoal 4.2.3:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6 V
KK1 U7 U8
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
H29 : adj U6 (par A1 B1) V
H31 : perm KK KK1
H32 : adj KK1 A U7
H34 : adj U7 B U8
H35 : adj U8 (par A1 B1) KAB
============================
perm V KAB
Subgoal 4.2 is:
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 4.2:
Variables: A B QL L J KA KAB A1 B1 LL J1 K KK U U1 U2 UA UAB U3 U4 U5 U6 V
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H11 : adj KK (par A1 B1) U
H13 : perm U J
H20 : mell QL UAB
H24 : adj U4 B1 UAB
H25 : adj KK A U5
H27 : adj U5 B U6
H28 : adj U6 A1 U4
H29 : adj U6 (par A1 B1) V
H30 : perm V KAB
============================
mell QL KAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < backchain mell_perm_l with K = V.
Subgoal 5:
Variables: A B QL L J KA KAB LL
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL bot L
H6 : mell QL LL *
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_same_result_diff to H2 H5.
Subgoal 5:
Variables: A B QL L J KA KAB LL
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL bot L
H6 : mell QL LL *
H7 : par A B = bot /\ perm J LL \/ (exists KK, adj KK (par A B) LL)
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H7.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL bot L
H6 : mell QL LL *
H8 : adj KK (par A B) LL
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to H8 *H5.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H9 : adj KK bot U
H10 : adj U (par A B) L
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_same_result to *H10 *H2.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H9 : adj KK bot U
H11 : perm U J
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_perm_full to *H11 *H9.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U KK1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H12 : adj KK1 bot J
H13 : perm KK KK1
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H12 *H3.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U KK1 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H4 : adj KA B KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H15 : adj U1 bot KA
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H15 *H4.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB.
Subgoal 5.1:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H8.
Subgoal 5.1:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H18 : is_fm (par A B)
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H18.
Subgoal 5.1:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H19 : is_fm A
H20 : is_fm B
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_1_is_list to H8.
Subgoal 5.1:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H19 : is_fm A
H20 : is_fm B
H21 : is_list KK
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to *H19 H21.
Subgoal 5.1:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H20 : is_fm B
H21 : is_list KK
H22 : adj KK A M
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H22.
Subgoal 5.1:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H20 : is_fm B
H21 : is_list KK
H22 : adj KK A M
H23 : is_list M
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to *H20 *H23.
Subgoal 5.1:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 M M1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H21 : is_list KK
H22 : adj KK A M
H24 : adj M B M1
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
Ht : exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : mell QL LL *
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H18 : adj KK A KKA
H19 : adj KKA B KKAB
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply IH to *H6 H8 H18 H19.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H18 : adj KK A KKA
H19 : adj KKA B KKAB
H20 : mell QL KKAB
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists V, adj KKAB bot V.
Subgoal 5.2:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H18 : adj KK A KKA
H19 : adj KKA B KKAB
H20 : mell QL KKAB
============================
exists V, adj KKAB bot V
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H19.
Subgoal 5.2:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H18 : adj KK A KKA
H19 : adj KKA B KKAB
H20 : mell QL KKAB
H21 : is_list KKAB
============================
exists V, adj KKAB bot V
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to _ H21 with A = bot.
Subgoal 5.2:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 KKA KKAB M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H18 : adj KK A KKA
H19 : adj KKA B KKAB
H20 : mell QL KKAB
H21 : is_list KKAB
H22 : adj KKAB bot M
============================
exists V, adj KKAB bot V
Subgoal 5 is:
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H18 : adj KK A KKA
H19 : adj KKA B KKAB
H20 : mell QL KKAB
Ht : exists V, adj KKAB bot V
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 KKA KKAB V
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H18 : adj KK A KKA
H19 : adj KKA B KKAB
H20 : mell QL KKAB
H21 : adj KKAB bot V
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < assert perm V KAB.
Subgoal 5:
Variables: A B QL L J KA KAB LL KK U KK1 U1 U2 KKA KKAB V
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H8 : adj KK (par A B) LL
H13 : perm KK KK1
H14 : adj KK1 A U1
H16 : adj U1 B U2
H17 : adj U2 bot KAB
H18 : adj KK A KKA
H19 : adj KKA B KKAB
H20 : mell QL KKAB
H21 : adj KKAB bot V
H22 : perm V KAB
============================
mell QL KAB
Subgoal 6 is:
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < backchain mell_perm_l with K = V.
Subgoal 6:
Variables: A B QL J KA KAB A1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) (bang A1 :: nil)
H3 : adj J A KA
H4 : adj KA B KAB
H5 : mell QL (A1 :: nil) *
============================
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H2.
Subgoal 6:
Variables: A B QL KA KAB A1 K
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj (bang A1 :: K) A KA
H4 : adj KA B KAB
H5 : mell QL (A1 :: nil) *
H6 : is_fm (bang A1)
H7 : adj K (par A B) nil
============================
mell QL KAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H7.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL (qm A1) L
H6 : adj QL A1 QK
H7 : mell QK LL *
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_same_result_diff to H2 H5.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL (qm A1) L
H6 : adj QL A1 QK
H7 : mell QK LL *
H8 : par A B = qm A1 /\ perm J LL \/ (exists KK, adj KK (par A B) LL)
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H8.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj LL (qm A1) L
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to H9 *H5.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H10 : adj KK (qm A1) U
H11 : adj U (par A B) L
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_same_result to *H11 *H2.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H10 : adj KK (qm A1) U
H12 : perm U J
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_perm_full to *H12 *H10.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H13 : adj KK1 (qm A1) J
H14 : perm KK KK1
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H13 *H3.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H4 : adj KA B KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H16 : adj U1 (qm A1) KA
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_swap to *H16 *H4.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB.
Subgoal 7.1:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H9.
Subgoal 7.1:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : is_fm (par A B)
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case H19.
Subgoal 7.1:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H20 : is_fm A
H21 : is_fm B
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_1_is_list to H9.
Subgoal 7.1:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H20 : is_fm A
H21 : is_fm B
H22 : is_list KK
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H20 H22.
Subgoal 7.1:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H20 : is_fm A
H21 : is_fm B
H22 : is_list KK
H23 : adj KK A M
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H23.
Subgoal 7.1:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H20 : is_fm A
H21 : is_fm B
H22 : is_list KK
H23 : adj KK A M
H24 : is_list M
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H21 H24.
Subgoal 7.1:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 M M1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H20 : is_fm A
H21 : is_fm B
H22 : is_list KK
H23 : adj KK A M
H24 : is_list M
H25 : adj M B M1
============================
exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
Ht : exists KKA KKAB, adj KK A KKA /\ adj KKA B KKAB
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H7 : mell QK LL *
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : adj KK A KKA
H20 : adj KKA B KKAB
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply IH to *H7 H9 H19 H20.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : adj KK A KKA
H20 : adj KKA B KKAB
H21 : mell QK KKAB
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < Ht : assert 0 exists V, adj KKAB (qm A1) V.
Subgoal 7.2:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : adj KK A KKA
H20 : adj KKA B KKAB
H21 : mell QK KKAB
============================
exists V, adj KKAB (qm A1) V
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H20.
Subgoal 7.2:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : adj KK A KKA
H20 : adj KKA B KKAB
H21 : mell QK KKAB
H22 : is_list KKAB
============================
exists V, adj KKAB (qm A1) V
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H18.
Subgoal 7.2:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : adj KK A KKA
H20 : adj KKA B KKAB
H21 : mell QK KKAB
H22 : is_list KKAB
H23 : is_fm (qm A1)
============================
exists V, adj KKAB (qm A1) V
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H23 H22.
Subgoal 7.2:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 KKA KKAB M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : adj KK A KKA
H20 : adj KKA B KKAB
H21 : mell QK KKAB
H22 : is_list KKAB
H23 : is_fm (qm A1)
H24 : adj KKAB (qm A1) M
============================
exists V, adj KKAB (qm A1) V
Subgoal 7 is:
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 KKA KKAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : adj KK A KKA
H20 : adj KKA B KKAB
H21 : mell QK KKAB
Ht : exists V, adj KKAB (qm A1) V
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < case Ht.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 KKA KKAB V
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : adj KK A KKA
H20 : adj KKA B KKAB
H21 : mell QK KKAB
H22 : adj KKAB (qm A1) V
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < assert perm V KAB.
Subgoal 7:
Variables: A B QL L J KA KAB A1 LL QK KK U KK1 U1 U2 KKA KKAB V
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H6 : adj QL A1 QK
H9 : adj KK (par A B) LL
H14 : perm KK KK1
H15 : adj KK1 A U1
H17 : adj U1 B U2
H18 : adj U2 (qm A1) KAB
H19 : adj KK A KKA
H20 : adj KKA B KKAB
H21 : mell QK KKAB
H22 : adj KKAB (qm A1) V
H23 : perm V KAB
============================
mell QL KAB
Subgoal 8 is:
mell QL KAB
par_inv < backchain mell_perm_l with K = V.
Subgoal 8:
Variables: A B QL L J KA KAB A1 QK J1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H2 : adj J (par A B) L
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H6 : adj L A1 J1
H7 : mell QL J1 *
============================
mell QL KAB
par_inv < apply adj_swap to *H2 *H6.
Subgoal 8:
Variables: A B QL L J KA KAB A1 QK J1 U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
============================
mell QL KAB
par_inv < Ht : assert 0 exists UA UAB, adj U A UA /\ adj UA B UAB.
Subgoal 8.1:
Variables: A B QL L J KA KAB A1 QK J1 U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
============================
exists UA UAB, adj U A UA /\ adj UA B UAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_2_is_o to H9.
Subgoal 8.1:
Variables: A B QL L J KA KAB A1 QK J1 U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
H10 : is_fm (par A B)
============================
exists UA UAB, adj U A UA /\ adj UA B UAB
Subgoal 8 is:
mell QL KAB
par_inv < case H10.
Subgoal 8.1:
Variables: A B QL L J KA KAB A1 QK J1 U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
H11 : is_fm A
H12 : is_fm B
============================
exists UA UAB, adj U A UA /\ adj UA B UAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_1_is_list to H9.
Subgoal 8.1:
Variables: A B QL L J KA KAB A1 QK J1 U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
H11 : is_fm A
H12 : is_fm B
H13 : is_list U
============================
exists UA UAB, adj U A UA /\ adj UA B UAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H11 H13.
Subgoal 8.1:
Variables: A B QL L J KA KAB A1 QK J1 U M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
H11 : is_fm A
H12 : is_fm B
H13 : is_list U
H14 : adj U A M
============================
exists UA UAB, adj U A UA /\ adj UA B UAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_3_is_list to H14.
Subgoal 8.1:
Variables: A B QL L J KA KAB A1 QK J1 U M
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
H11 : is_fm A
H12 : is_fm B
H13 : is_list U
H14 : adj U A M
H15 : is_list M
============================
exists UA UAB, adj U A UA /\ adj UA B UAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_exists to H12 H15.
Subgoal 8.1:
Variables: A B QL L J KA KAB A1 QK J1 U M M1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
H11 : is_fm A
H12 : is_fm B
H13 : is_list U
H14 : adj U A M
H15 : is_list M
H16 : adj M B M1
============================
exists UA UAB, adj U A UA /\ adj UA B UAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 8:
Variables: A B QL L J KA KAB A1 QK J1 U
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
Ht : exists UA UAB, adj U A UA /\ adj UA B UAB
============================
mell QL KAB
par_inv < case Ht.
Subgoal 8:
Variables: A B QL L J KA KAB A1 QK J1 U UA UAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H7 : mell QL J1 *
H8 : adj J A1 U
H9 : adj U (par A B) J1
H10 : adj U A UA
H11 : adj UA B UAB
============================
mell QL KAB
par_inv < apply IH to *H7 H9 H10 H11.
Subgoal 8:
Variables: A B QL L J KA KAB A1 QK J1 U UA UAB
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H8 : adj J A1 U
H9 : adj U (par A B) J1
H10 : adj U A UA
H11 : adj UA B UAB
H12 : mell QL UAB
============================
mell QL KAB
par_inv < apply adj_swap to *H8 *H10.
Subgoal 8:
Variables: A B QL L J KA KAB A1 QK J1 U UA UAB U1
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H9 : adj U (par A B) J1
H11 : adj UA B UAB
H12 : mell QL UAB
H13 : adj J A U1
H14 : adj U1 A1 UA
============================
mell QL KAB
par_inv < apply adj_swap to *H14 *H11.
Subgoal 8:
Variables: A B QL L J KA KAB A1 QK J1 U UA UAB U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H9 : adj U (par A B) J1
H12 : mell QL UAB
H13 : adj J A U1
H15 : adj U1 B U2
H16 : adj U2 A1 UAB
============================
mell QL KAB
par_inv < assert perm U2 KAB.
Subgoal 8.2:
Variables: A B QL L J KA KAB A1 QK J1 U UA UAB U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H9 : adj U (par A B) J1
H12 : mell QL UAB
H13 : adj J A U1
H15 : adj U1 B U2
H16 : adj U2 A1 UAB
============================
perm U2 KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply adj_1_is_list to H3.
Subgoal 8.2:
Variables: A B QL L J KA KAB A1 QK J1 U UA UAB U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H9 : adj U (par A B) J1
H12 : mell QL UAB
H13 : adj J A U1
H15 : adj U1 B U2
H16 : adj U2 A1 UAB
H17 : is_list J
============================
perm U2 KAB
Subgoal 8 is:
mell QL KAB
par_inv < apply perm_refl to H17.
Subgoal 8.2:
Variables: A B QL L J KA KAB A1 QK J1 U UA UAB U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H9 : adj U (par A B) J1
H12 : mell QL UAB
H13 : adj J A U1
H15 : adj U1 B U2
H16 : adj U2 A1 UAB
H17 : is_list J
H18 : perm J J
============================
perm U2 KAB
Subgoal 8 is:
mell QL KAB
par_inv < search.
Subgoal 8:
Variables: A B QL L J KA KAB A1 QK J1 U UA UAB U1 U2
IH : forall A B QL L J KA KAB, mell QL L * -> adj J (par A B) L ->
adj J A KA -> adj KA B KAB -> mell QL KAB
H3 : adj J A KA
H4 : adj KA B KAB
H5 : adj QK A1 QL
H9 : adj U (par A B) J1
H12 : mell QL UAB
H13 : adj J A U1
H15 : adj U1 B U2
H16 : adj U2 A1 UAB
H17 : perm U2 KAB
============================
mell QL KAB
par_inv < backchain mell_perm_l with K = U2.
Proof completed.
Abella < Theorem qm_inv :
forall A QL L J QK, mell QL L -> adj J (qm A) L -> adj QL A QK -> mell QK J.
============================
forall A QL L J QK, mell QL L -> adj J (qm A) L -> adj QL A QK -> mell QK J
qm_inv < induction on 1.
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
============================
forall A QL L J QK, mell QL L @ -> adj J (qm A) L -> adj QL A QK ->
mell QK J
qm_inv < intros.
Variables: A QL L J QK
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H1 : mell QL L @
H2 : adj J (qm A) L
H3 : adj QL A QK
============================
mell QK J
qm_inv < case H1.
Subgoal 1:
Variables: A QL L J QK A1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : is_list QL
H5 : adj (natom A1 :: nil) (atom A1) L
============================
mell QK J
Subgoal 2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H5.
Subgoal 1.1:
Variables: A QL J QK A1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) (atom A1 :: natom A1 :: nil)
H3 : adj QL A QK
H4 : is_list QL
H6 : is_fm (atom A1)
H7 : is_list (natom A1 :: nil)
============================
mell QK J
Subgoal 1.2 is:
mell QK J
Subgoal 2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H2.
Subgoal 1.1:
Variables: A QL QK A1 K
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H4 : is_list QL
H6 : is_fm (atom A1)
H7 : is_list (natom A1 :: nil)
H8 : is_fm (atom A1)
H9 : adj K (qm A) (natom A1 :: nil)
============================
mell QK (atom A1 :: K)
Subgoal 1.2 is:
mell QK J
Subgoal 2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H9.
Subgoal 1.1:
Variables: A QL QK A1 K1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H4 : is_list QL
H6 : is_fm (atom A1)
H7 : is_list (natom A1 :: nil)
H8 : is_fm (atom A1)
H10 : is_fm (natom A1)
H11 : adj K1 (qm A) nil
============================
mell QK (atom A1 :: natom A1 :: K1)
Subgoal 1.2 is:
mell QK J
Subgoal 2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H11.
Subgoal 1.2:
Variables: A QL J QK A1 L1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) (natom A1 :: L1)
H3 : adj QL A QK
H4 : is_list QL
H6 : is_fm (natom A1)
H7 : adj nil (atom A1) L1
============================
mell QK J
Subgoal 2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H2.
Subgoal 1.2:
Variables: A QL QK A1 L1 K
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H4 : is_list QL
H6 : is_fm (natom A1)
H7 : adj nil (atom A1) L1
H8 : is_fm (natom A1)
H9 : adj K (qm A) L1
============================
mell QK (natom A1 :: K)
Subgoal 2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H7.
Subgoal 1.2:
Variables: A QL QK A1 K
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H4 : is_list QL
H6 : is_fm (natom A1)
H8 : is_fm (natom A1)
H9 : adj K (qm A) (atom A1 :: nil)
H10 : is_fm (atom A1)
H11 : is_list nil
============================
mell QK (natom A1 :: K)
Subgoal 2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H9.
Subgoal 1.2:
Variables: A QL QK A1 K1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H4 : is_list QL
H6 : is_fm (natom A1)
H8 : is_fm (natom A1)
H10 : is_fm (atom A1)
H11 : is_list nil
H12 : is_fm (atom A1)
H13 : adj K1 (qm A) nil
============================
mell QK (natom A1 :: atom A1 :: K1)
Subgoal 2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H13.
Subgoal 2:
Variables: A QL L J QK A1 B LL JJ KK J1 K
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL (tens A1 B) L
H5 : merge JJ KK LL
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H8 : adj KK B K
H9 : mell QL K *
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_same_result_diff to H2 H4.
Subgoal 2:
Variables: A QL L J QK A1 B LL JJ KK J1 K
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL (tens A1 B) L
H5 : merge JJ KK LL
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H8 : adj KK B K
H9 : mell QL K *
H10 : qm A = tens A1 B /\ perm J LL \/ (exists KK, adj KK (qm A) LL)
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H10.
Subgoal 2:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL (tens A1 B) L
H5 : merge JJ KK LL
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H8 : adj KK B K
H9 : mell QL K *
H11 : adj KK1 (qm A) LL
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_swap to H11 *H4.
Subgoal 2:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H5 : merge JJ KK LL
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H8 : adj KK B K
H9 : mell QL K *
H11 : adj KK1 (qm A) LL
H12 : adj KK1 (tens A1 B) U
H13 : adj U (qm A) L
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_same_result to *H13 *H2.
Subgoal 2:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : merge JJ KK LL
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H8 : adj KK B K
H9 : mell QL K *
H11 : adj KK1 (qm A) LL
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply merge_unadj_3 to *H5 *H11.
Subgoal 2:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H8 : adj KK B K
H9 : mell QL K *
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
H15 : (exists JJ1, adj JJ1 (qm A) JJ /\ merge JJ1 KK KK1) \/
(exists KK2, adj KK2 (qm A) KK /\ merge JJ KK2 KK1)
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H15.
Subgoal 2.1:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U JJ1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H8 : adj KK B K
H9 : mell QL K *
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
H16 : adj JJ1 (qm A) JJ
H17 : merge JJ1 KK KK1
============================
mell QK J
Subgoal 2.2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_swap to *H16 *H6.
Subgoal 2.1:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U JJ1 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H7 : mell QL J1 *
H8 : adj KK B K
H9 : mell QL K *
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
H17 : merge JJ1 KK KK1
H18 : adj JJ1 A1 U1
H19 : adj U1 (qm A) J1
============================
mell QK J
Subgoal 2.2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply IH to *H7 *H19 H3.
Subgoal 2.1:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U JJ1 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H8 : adj KK B K
H9 : mell QL K *
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
H17 : merge JJ1 KK KK1
H18 : adj JJ1 A1 U1
H20 : mell QK U1
============================
mell QK J
Subgoal 2.2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply mell_weaken_q1 to *H9 *H3.
Subgoal 2.1:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U JJ1 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H8 : adj KK B K
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
H17 : merge JJ1 KK KK1
H18 : adj JJ1 A1 U1
H20 : mell QK U1
H21 : mell QK K
============================
mell QK J
Subgoal 2.2 is:
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < backchain mell_perm_l with K = U.
Subgoal 2.2:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U KK2
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H8 : adj KK B K
H9 : mell QL K *
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
H16 : adj KK2 (qm A) KK
H17 : merge JJ KK2 KK1
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_swap to *H16 *H8.
Subgoal 2.2:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U KK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H9 : mell QL K *
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
H17 : merge JJ KK2 KK1
H18 : adj KK2 B U1
H19 : adj U1 (qm A) K
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply IH to *H9 *H19 H3.
Subgoal 2.2:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U KK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H6 : adj JJ A1 J1
H7 : mell QL J1 *
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
H17 : merge JJ KK2 KK1
H18 : adj KK2 B U1
H20 : mell QK U1
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply mell_weaken_q1 to *H7 *H3.
Subgoal 2.2:
Variables: A QL L J QK A1 B LL JJ KK J1 K KK1 U KK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H6 : adj JJ A1 J1
H12 : adj KK1 (tens A1 B) U
H14 : perm U J
H17 : merge JJ KK2 KK1
H18 : adj KK2 B U1
H20 : mell QK U1
H21 : mell QK J1
============================
mell QK J
Subgoal 3 is:
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < backchain mell_perm_l with K = U.
Subgoal 3:
Variables: A QL J QK
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) (one :: nil)
H3 : adj QL A QK
H4 : is_list QL
============================
mell QK J
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H2.
Subgoal 3:
Variables: A QL QK K
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H4 : is_list QL
H5 : is_fm one
H6 : adj K (qm A) nil
============================
mell QK (one :: K)
Subgoal 4 is:
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H6.
Subgoal 4:
Variables: A QL L J QK A1 B LL J1 K
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL (par A1 B) L
H5 : adj LL A1 J1
H6 : adj J1 B K
H7 : mell QL K *
============================
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_same_result_diff to H2 H4.
Subgoal 4:
Variables: A QL L J QK A1 B LL J1 K
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL (par A1 B) L
H5 : adj LL A1 J1
H6 : adj J1 B K
H7 : mell QL K *
H8 : qm A = par A1 B /\ perm J LL \/ (exists KK, adj KK (qm A) LL)
============================
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H8.
Subgoal 4:
Variables: A QL L J QK A1 B LL J1 K KK
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL (par A1 B) L
H5 : adj LL A1 J1
H6 : adj J1 B K
H7 : mell QL K *
H9 : adj KK (qm A) LL
============================
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_swap to H9 *H4.
Subgoal 4:
Variables: A QL L J QK A1 B LL J1 K KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H5 : adj LL A1 J1
H6 : adj J1 B K
H7 : mell QL K *
H9 : adj KK (qm A) LL
H10 : adj KK (par A1 B) U
H11 : adj U (qm A) L
============================
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_same_result to *H11 *H2.
Subgoal 4:
Variables: A QL L J QK A1 B LL J1 K KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : adj LL A1 J1
H6 : adj J1 B K
H7 : mell QL K *
H9 : adj KK (qm A) LL
H10 : adj KK (par A1 B) U
H12 : perm U J
============================
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_swap to *H9 *H5.
Subgoal 4:
Variables: A QL L J QK A1 B LL J1 K KK U U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H6 : adj J1 B K
H7 : mell QL K *
H10 : adj KK (par A1 B) U
H12 : perm U J
H13 : adj KK A1 U1
H14 : adj U1 (qm A) J1
============================
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_swap to *H14 *H6.
Subgoal 4:
Variables: A QL L J QK A1 B LL J1 K KK U U1 U2
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H7 : mell QL K *
H10 : adj KK (par A1 B) U
H12 : perm U J
H13 : adj KK A1 U1
H15 : adj U1 B U2
H16 : adj U2 (qm A) K
============================
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply IH to *H7 *H16 *H3.
Subgoal 4:
Variables: A QL L J QK A1 B LL J1 K KK U U1 U2
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H10 : adj KK (par A1 B) U
H12 : perm U J
H13 : adj KK A1 U1
H15 : adj U1 B U2
H17 : mell QK U2
============================
mell QK J
Subgoal 5 is:
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < backchain mell_perm_l with K = U.
Subgoal 5:
Variables: A QL L J QK LL
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL bot L
H5 : mell QL LL *
============================
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_same_result_diff to H2 H4.
Subgoal 5:
Variables: A QL L J QK LL
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL bot L
H5 : mell QL LL *
H6 : qm A = bot /\ perm J LL \/ (exists KK, adj KK (qm A) LL)
============================
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H6.
Subgoal 5:
Variables: A QL L J QK LL KK
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL bot L
H5 : mell QL LL *
H7 : adj KK (qm A) LL
============================
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_swap to H7 *H4.
Subgoal 5:
Variables: A QL L J QK LL KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H5 : mell QL LL *
H7 : adj KK (qm A) LL
H8 : adj KK bot U
H9 : adj U (qm A) L
============================
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_same_result to *H9 *H2.
Subgoal 5:
Variables: A QL L J QK LL KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : mell QL LL *
H7 : adj KK (qm A) LL
H8 : adj KK bot U
H10 : perm U J
============================
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply IH to *H5 *H7 *H3.
Subgoal 5:
Variables: A QL L J QK LL KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H8 : adj KK bot U
H10 : perm U J
H11 : mell QK KK
============================
mell QK J
Subgoal 6 is:
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < backchain mell_perm_l with K = U.
Subgoal 6:
Variables: A QL J QK A1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) (bang A1 :: nil)
H3 : adj QL A QK
H4 : mell QL (A1 :: nil) *
============================
mell QK J
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H2.
Subgoal 6:
Variables: A QL QK A1 K
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H4 : mell QL (A1 :: nil) *
H5 : is_fm (bang A1)
H6 : adj K (qm A) nil
============================
mell QK (bang A1 :: K)
Subgoal 7 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H6.
Subgoal 7:
Variables: A QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_same_result_diff to H2 H4.
Subgoal 7:
Variables: A QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H7 : qm A = qm A1 /\ perm J LL \/ (exists KK, adj KK (qm A) LL)
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case H7.
Subgoal 7.1:
Variables: QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A1) L
H3 : adj QL A1 QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : perm J LL
============================
mell QK J
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply perm_sym to *H8.
Subgoal 7.1:
Variables: QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A1) L
H3 : adj QL A1 QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H9 : perm LL J
============================
mell QK J
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply mell_perm_l to *H6 *H9.
Subgoal 7.1:
Variables: QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A1) L
H3 : adj QL A1 QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H10 : mell QK1 J
============================
mell QK J
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < assert perm QK1 QK.
Subgoal 7.1.1:
Variables: QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A1) L
H3 : adj QL A1 QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H10 : mell QK1 J
============================
perm QK1 QK
Subgoal 7.1 is:
mell QK J
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_1_is_list to H3.
Subgoal 7.1.1:
Variables: QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A1) L
H3 : adj QL A1 QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H10 : mell QK1 J
H11 : is_list QL
============================
perm QK1 QK
Subgoal 7.1 is:
mell QK J
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply perm_refl to H11.
Subgoal 7.1.1:
Variables: QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A1) L
H3 : adj QL A1 QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H10 : mell QK1 J
H11 : is_list QL
H12 : perm QL QL
============================
perm QK1 QK
Subgoal 7.1 is:
mell QK J
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < search.
Subgoal 7.1:
Variables: QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A1) L
H3 : adj QL A1 QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H10 : mell QK1 J
H11 : perm QK1 QK
============================
mell QK J
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply mell_perm_q to *H10 *H11.
Subgoal 7.1:
Variables: QL L J QK A1 LL QK1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A1) L
H3 : adj QL A1 QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H12 : mell QK J
============================
mell QK J
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < search.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj LL (qm A1) L
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : adj KK (qm A) LL
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_swap to H8 *H4.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : adj KK (qm A) LL
H9 : adj KK (qm A1) U
H10 : adj U (qm A) L
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_same_result to *H10 *H2.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : adj KK (qm A) LL
H9 : adj KK (qm A1) U
H11 : perm U J
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < Ht : assert 0 exists QK2, adj QK1 A QK2.
Subgoal 7.2.1:
Variables: A QL L J QK A1 LL QK1 KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : adj KK (qm A) LL
H9 : adj KK (qm A1) U
H11 : perm U J
============================
exists QK2, adj QK1 A QK2
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_2_is_o to H3.
Subgoal 7.2.1:
Variables: A QL L J QK A1 LL QK1 KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : adj KK (qm A) LL
H9 : adj KK (qm A1) U
H11 : perm U J
H12 : is_fm A
============================
exists QK2, adj QK1 A QK2
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_3_is_list to H5.
Subgoal 7.2.1:
Variables: A QL L J QK A1 LL QK1 KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : adj KK (qm A) LL
H9 : adj KK (qm A1) U
H11 : perm U J
H12 : is_fm A
H13 : is_list QK1
============================
exists QK2, adj QK1 A QK2
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_exists to *H12 *H13.
Subgoal 7.2.1:
Variables: A QL L J QK A1 LL QK1 KK U M
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : adj KK (qm A) LL
H9 : adj KK (qm A1) U
H11 : perm U J
H14 : adj QK1 A M
============================
exists QK2, adj QK1 A QK2
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < search.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : adj KK (qm A) LL
H9 : adj KK (qm A1) U
H11 : perm U J
Ht : exists QK2, adj QK1 A QK2
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < case Ht.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK U QK2
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : adj QL A1 QK1
H6 : mell QK1 LL *
H8 : adj KK (qm A) LL
H9 : adj KK (qm A1) U
H11 : perm U J
H12 : adj QK1 A QK2
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply IH to *H6 *H8 H12.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK U QK2
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H5 : adj QL A1 QK1
H9 : adj KK (qm A1) U
H11 : perm U J
H12 : adj QK1 A QK2
H13 : mell QK2 KK
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_swap to *H5 *H12.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK U QK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H9 : adj KK (qm A1) U
H11 : perm U J
H13 : mell QK2 KK
H14 : adj QL A U1
H15 : adj U1 A1 QK2
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < assert mell U1 U.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK U QK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H9 : adj KK (qm A1) U
H11 : perm U J
H13 : mell QK2 KK
H14 : adj QL A U1
H15 : adj U1 A1 QK2
H16 : mell U1 U
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply mell_perm_l to *H16 *H11.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK U QK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H9 : adj KK (qm A1) U
H13 : mell QK2 KK
H14 : adj QL A U1
H15 : adj U1 A1 QK2
H17 : mell U1 J
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < assert 0 perm U1 QK.
Subgoal 7.2.2:
Variables: A QL L J QK A1 LL QK1 KK U QK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H9 : adj KK (qm A1) U
H13 : mell QK2 KK
H14 : adj QL A U1
H15 : adj U1 A1 QK2
H17 : mell U1 J
============================
perm U1 QK
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply adj_1_is_list to H3.
Subgoal 7.2.2:
Variables: A QL L J QK A1 LL QK1 KK U QK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H9 : adj KK (qm A1) U
H13 : mell QK2 KK
H14 : adj QL A U1
H15 : adj U1 A1 QK2
H17 : mell U1 J
H18 : is_list QL
============================
perm U1 QK
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < apply perm_refl to H18.
Subgoal 7.2.2:
Variables: A QL L J QK A1 LL QK1 KK U QK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H9 : adj KK (qm A1) U
H13 : mell QK2 KK
H14 : adj QL A U1
H15 : adj U1 A1 QK2
H17 : mell U1 J
H18 : is_list QL
H19 : perm QL QL
============================
perm U1 QK
Subgoal 7.2 is:
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < search.
Subgoal 7.2:
Variables: A QL L J QK A1 LL QK1 KK U QK2 U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H9 : adj KK (qm A1) U
H13 : mell QK2 KK
H14 : adj QL A U1
H15 : adj U1 A1 QK2
H17 : mell U1 J
H18 : perm U1 QK
============================
mell QK J
Subgoal 8 is:
mell QK J
qm_inv < backchain mell_perm_q.
Subgoal 8:
Variables: A QL L J QK A1 QK1 J1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H2 : adj J (qm A) L
H3 : adj QL A QK
H4 : adj QK1 A1 QL
H5 : adj L A1 J1
H6 : mell QL J1 *
============================
mell QK J
qm_inv < apply adj_swap to *H2 *H5.
Subgoal 8:
Variables: A QL L J QK A1 QK1 J1 U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H4 : adj QK1 A1 QL
H6 : mell QL J1 *
H7 : adj J A1 U
H8 : adj U (qm A) J1
============================
mell QK J
qm_inv < apply IH to *H6 *H8 H3.
Subgoal 8:
Variables: A QL L J QK A1 QK1 J1 U
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H3 : adj QL A QK
H4 : adj QK1 A1 QL
H7 : adj J A1 U
H9 : mell QK U
============================
mell QK J
qm_inv < apply adj_swap to *H4 *H3.
Subgoal 8:
Variables: A QL L J QK A1 QK1 J1 U U1
IH : forall A QL L J QK, mell QL L * -> adj J (qm A) L -> adj QL A QK ->
mell QK J
H7 : adj J A1 U
H9 : mell QK U
H10 : adj QK1 A U1
H11 : adj U1 A1 QK
============================
mell QK J
qm_inv < search.
Proof completed.
Abella < Kind weight Type.
Abella < Type heavy, light weight.
Abella < Define is_weight : weight -> prop by
is_weight light;
is_weight heavy := is_weight light.
Abella < Define incl : (list o) -> (list o) -> prop by
incl J L := exists K, merge J K L.
Abella < Theorem $cut_admit :
forall A B QL J W, dual A B -> mell QL J -> is_weight W -> W = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K).
============================
forall A B QL J W, dual A B -> mell QL J -> is_weight W -> W = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHrk : induction on 1.
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
forall A B QL J W, dual A B @ -> mell QL J -> is_weight W -> W = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHht : induction on 2.
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W -> W = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHwt : induction on 3.
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W @@@ -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < intros.
Variables: A B QL J W
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H3 : is_weight W @@@
============================
W = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H3.
Subgoal 1:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
============================
light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < left.
Subgoal 1:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
============================
light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL)
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < split.
Subgoal 1.1:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
============================
light = light
Subgoal 1.2 is:
forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
============================
forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < intros.
Subgoal 1.2:
Variables: A B QL J QQL JJ KK K LL
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H2 (keep).
Subgoal 1.2.1:
Variables: A B QL J QQL JJ KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
============================
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_same_result_diff to H5 H10.
Subgoal 1.2.1:
Variables: A B QL J QQL JJ KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H11 : A = atom A1 /\ perm JJ (natom A1 :: nil) \/
(exists KK, adj KK A (natom A1 :: nil))
============================
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H11.
Subgoal 1.2.1.1:
Variables: B QL J QQL JJ KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual (atom A1) B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (atom A1) J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H12 : perm JJ (natom A1 :: nil)
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H1.
Subgoal 1.2.1.1:
Variables: QL J QQL JJ KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (atom A1) J
H6 : adj KK (natom A1) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H12 : perm JJ (natom A1 :: nil)
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply perm_cons_2 to *H12.
Subgoal 1.2.1.1:
Variables: QL J QQL JJ KK K LL A1 J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (atom A1) J
H6 : adj KK (natom A1) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H13 : adj J1 (natom A1) JJ
H14 : perm J1 nil
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply perm_sym to *H14.
Subgoal 1.2.1.1:
Variables: QL J QQL JJ KK K LL A1 J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (atom A1) J
H6 : adj KK (natom A1) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H13 : adj J1 (natom A1) JJ
H15 : perm nil J1
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply perm_nil_1 to *H15.
Subgoal 1.2.1.1:
Variables: QL J QQL JJ KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (atom A1) J
H6 : adj KK (natom A1) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H13 : adj nil (natom A1) JJ
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H13.
Subgoal 1.2.1.1:
Variables: QL J QQL KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj (natom A1 :: nil) (atom A1) J
H6 : adj KK (natom A1) K
H7 : mell QQL K
H8 : merge (natom A1 :: nil) KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H16 : is_fm (natom A1)
H17 : is_list nil
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_1 to *H8 _.
Subgoal 1.2.1.1:
Variables: QL J QQL KK K LL A1 LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj (natom A1 :: nil) (atom A1) J
H6 : adj KK (natom A1) K
H7 : mell QQL K
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H16 : is_fm (natom A1)
H17 : is_list nil
H18 : adj LL1 (natom A1) LL
H19 : merge nil KK LL1
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_nil_perm to *H19.
Subgoal 1.2.1.1:
Variables: QL J QQL KK K LL A1 LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj (natom A1 :: nil) (atom A1) J
H6 : adj KK (natom A1) K
H7 : mell QQL K
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H16 : is_fm (natom A1)
H17 : is_list nil
H18 : adj LL1 (natom A1) LL
H20 : perm KK LL1
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < assert perm K LL.
Subgoal 1.2.1.1:
Variables: QL J QQL KK K LL A1 LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj (natom A1 :: nil) (atom A1) J
H6 : adj KK (natom A1) K
H7 : mell QQL K
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H16 : is_fm (natom A1)
H17 : is_list nil
H18 : adj LL1 (natom A1) LL
H20 : perm KK LL1
H21 : perm K LL
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply mell_perm_l to *H7 *H21.
Subgoal 1.2.1.1:
Variables: QL J QQL KK K LL A1 LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj (natom A1 :: nil) (atom A1) J
H6 : adj KK (natom A1) K
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H16 : is_fm (natom A1)
H17 : is_list nil
H18 : adj LL1 (natom A1) LL
H20 : perm KK LL1
H22 : mell QQL LL
============================
mell QQL LL
Subgoal 1.2.1.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.1.2:
Variables: A B QL J QQL JJ KK K LL A1 KK1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H12 : adj KK1 A (natom A1 :: nil)
============================
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H12.
Subgoal 1.2.1.2.1:
Variables: B QL J QQL JJ KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual (natom A1) B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (natom A1) J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H13 : is_fm (natom A1)
H14 : is_list nil
============================
mell QQL LL
Subgoal 1.2.1.2.2 is:
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H1.
Subgoal 1.2.1.2.2:
Variables: A B QL J QQL JJ KK K LL A1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
H10 : adj (natom A1 :: nil) (atom A1) J
H13 : is_fm (natom A1)
H14 : adj K1 A nil
============================
mell QQL LL
Subgoal 1.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H14.
Subgoal 1.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHht1 : apply IHht to H1 H12 _ with W = light.
Subgoal 1.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, J1 = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHht1 : case IHht1.
Subgoal 1.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHht2 : apply IHht to H1 H14 _ with W = light.
Subgoal 1.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, K1 = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHht2 : case IHht2.
Subgoal 1.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_same_result_diff to H5 H9.
Subgoal 1.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : A = tens A1 B1 /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H15.
Subgoal 1.2.2.1:
Variables: B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual (tens A1 B1) B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H1.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
H17 : dual A1 AA *
H18 : dual B1 BB *
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHrk1 : apply IHrk to *H17 H12 _ with W = light.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
H18 : dual B1 BB *
IHrk1 : light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 ->
adj KK AA K -> mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, J1 = A1 :: nil -> incl QL QQL -> adj QQL AA QQ ->
mell QQ K -> mell QQL K)
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHrk1 : case IHrk1.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
H18 : dual B1 BB *
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHrk2 : apply IHrk to *H18 H14 _ with W = light.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 ->
adj KK BB K -> mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, K1 = B1 :: nil -> incl QL QQL -> adj QQL BB QQ ->
mell QQ K -> mell QQL K)
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IHrk2 : case IHrk2.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert 0 exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB.
Subgoal 1.2.2.1.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_2_is_o to H6.
Subgoal 1.2.2.1.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : is_fm (par AA BB)
============================
exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H19.
Subgoal 1.2.2.1.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H20 : is_fm AA
H21 : is_fm BB
============================
exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_2_is_list to H8.
Subgoal 1.2.2.1.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H20 : is_fm AA
H21 : is_fm BB
H22 : is_list KK
============================
exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_exists to *H20 *H22.
Subgoal 1.2.2.1.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA M
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H21 : is_fm BB
H23 : adj KK AA M
============================
exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_3_is_list to H23.
Subgoal 1.2.2.1.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA M
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H21 : is_fm BB
H23 : adj KK AA M
H24 : is_list M
============================
exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_exists to *H21 *H24.
Subgoal 1.2.2.1.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA M M1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H23 : adj KK AA M
H25 : adj M BB M1
============================
exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply par_inv to H7 H6 H23 H25.
Subgoal 1.2.2.1.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA M M1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H23 : adj KK AA M
H25 : adj M BB M1
H26 : mell QQL M1
============================
exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
Ht : exists KKA KKB, adj KK AA KKA /\ adj KKA BB KKB /\ mell QQL KKB
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply perm_merge_1 to *H8 H16.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert 0 exists U, merge KK1 KKA U.
Subgoal 1.2.2.1.2:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
============================
exists U, merge KK1 KKA U
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_1_is_list to H13.
Subgoal 1.2.2.1.2:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : is_list KK1
============================
exists U, merge KK1 KKA U
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_3_is_list to H19.
Subgoal 1.2.2.1.2:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : is_list KK1
H24 : is_list KKA
============================
exists U, merge KK1 KKA U
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_exists to H23 H24.
Subgoal 1.2.2.1.2:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB L
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : is_list KK1
H24 : is_list KKA
H25 : merge KK1 KKA L
============================
exists U, merge KK1 KKA U
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
Ht : exists U, merge KK1 KKA U
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHrk2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ B1 K1 -> adj KK BB K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply *IHrk2 to H4 H13 H20 H21 H23.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
H24 : mell QQL U
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_2 to H23 H19.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
H24 : mell QQL U
H25 : adj LL2 AA U
H26 : merge KK1 KK LL2
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert exists V, merge JJ1 LL2 V.
Subgoal 1.2.2.1.3:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
H24 : mell QQL U
H25 : adj LL2 AA U
H26 : merge KK1 KK LL2
============================
exists V, merge JJ1 LL2 V
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_1_is_list to H11.
Subgoal 1.2.2.1.3:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
H24 : mell QQL U
H25 : adj LL2 AA U
H26 : merge KK1 KK LL2
H27 : is_list JJ1
============================
exists V, merge JJ1 LL2 V
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_3_is_list to H26.
Subgoal 1.2.2.1.3:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
H24 : mell QQL U
H25 : adj LL2 AA U
H26 : merge KK1 KK LL2
H27 : is_list JJ1
H28 : is_list LL2
============================
exists V, merge JJ1 LL2 V
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_exists to H27 H28.
Subgoal 1.2.2.1.3:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U LL2 L
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
H24 : mell QQL U
H25 : adj LL2 AA U
H26 : merge KK1 KK LL2
H27 : is_list JJ1
H28 : is_list LL2
H29 : merge JJ1 LL2 L
============================
exists V, merge JJ1 LL2 V
Subgoal 1.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
H24 : mell QQL U
H25 : adj LL2 AA U
H26 : merge KK1 KK LL2
Ht : exists V, merge JJ1 LL2 V
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U LL2 V
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
IHrk1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 J1 -> adj KK AA K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
H24 : mell QQL U
H25 : adj LL2 AA U
H26 : merge KK1 KK LL2
H27 : merge JJ1 LL2 V
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply *IHrk1 to H4 H11 H25 H24 H27.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U LL2 V
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H22 : merge LL1 KK LL
H23 : merge KK1 KKA U
H24 : mell QQL U
H25 : adj LL2 AA U
H26 : merge KK1 KK LL2
H27 : merge JJ1 LL2 V
H28 : mell QQL V
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_assoc to *H10 *H26 *H27 *H22.
Subgoal 1.2.2.1:
Variables: QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 BB AA KKA KKB U LL2 V
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (tens A1 B1) J
H6 : adj KK (par AA BB) K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) J1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (tens A1 B1) K1 ->
adj KK (par AA BB) K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : perm JJ LL1
H19 : adj KK AA KKA
H20 : adj KKA BB KKB
H21 : mell QQL KKB
H23 : merge KK1 KKA U
H24 : mell QQL U
H25 : adj LL2 AA U
H28 : mell QQL V
H29 : perm V LL
============================
mell QQL LL
Subgoal 1.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain mell_perm_l with K = V.
Subgoal 1.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_swap to H16 H9.
Subgoal 1.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_same_result to H5 H18.
Subgoal 1.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H19 : perm JJ U
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply perm_merge_1 to *H8 *H19.
Subgoal 1.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_1 to H20 H17.
Subgoal 1.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_3 to H10 H16.
Subgoal 1.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H23 : (exists JJ, adj JJ A JJ1 /\ merge JJ KK1 KK2) \/
(exists KK, adj KK A KK1 /\ merge JJ1 KK KK2)
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H23.
Subgoal 1.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H24 : adj JJ2 A JJ1
H25 : merge JJ2 KK1 KK2
============================
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_swap to *H24 *H11.
Subgoal 1.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
============================
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert 0 exists V, merge U1 KK V.
Subgoal 1.2.2.2.1.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
============================
exists V, merge U1 KK V
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_1_is_list to H27.
Subgoal 1.2.2.2.1.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : is_list U1
============================
exists V, merge U1 KK V
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_1_is_list to H6.
Subgoal 1.2.2.2.1.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : is_list U1
H29 : is_list KK
============================
exists V, merge U1 KK V
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_exists to H28 H29.
Subgoal 1.2.2.2.1.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 L
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : is_list U1
H29 : is_list KK
H30 : merge U1 KK L
============================
exists V, merge U1 KK V
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
Ht : exists V, merge U1 KK V
============================
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
============================
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply IHht1 to H4 H27 H6 H7 H28.
Subgoal 1.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
============================
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_1 to H28 H26.
Subgoal 1.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
============================
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < assert 0 merge LL3 KK1 LL2.
Subgoal 1.2.2.2.1.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
============================
merge LL3 KK1 LL2
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_sym to *H25.
Subgoal 1.2.2.2.1.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
H32 : merge KK1 JJ2 KK2
============================
merge LL3 KK1 LL2
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_1_is_list to H32.
Subgoal 1.2.2.2.1.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
H32 : merge KK1 JJ2 KK2
H33 : is_list KK1
============================
merge LL3 KK1 LL2
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_3_is_list to H31.
Subgoal 1.2.2.2.1.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
H32 : merge KK1 JJ2 KK2
H33 : is_list KK1
H34 : is_list LL3
============================
merge LL3 KK1 LL2
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_exists to *H33 *H34.
Subgoal 1.2.2.2.1.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3 L
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
H32 : merge KK1 JJ2 KK2
H35 : merge KK1 LL3 L
============================
merge LL3 KK1 LL2
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_assoc to *H32 *H31 H35 *H22.
Subgoal 1.2.2.2.1.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3 L
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H35 : merge KK1 LL3 L
H36 : perm L LL2
============================
merge LL3 KK1 LL2
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_sym to *H35.
Subgoal 1.2.2.2.1.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3 L
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H36 : perm L LL2
H37 : merge LL3 KK1 L
============================
merge LL3 KK1 LL2
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain perm_merge_3.
Subgoal 1.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
H32 : merge LL3 KK1 LL2
============================
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < assert mell QQL K1.
Subgoal 1.2.2.2.1.3:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
H32 : merge LL3 KK1 LL2
============================
mell QQL K1
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H4.
Subgoal 1.2.2.2.1.3:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3 K2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
H32 : merge LL3 KK1 LL2
H33 : merge QL K2 QQL
============================
mell QQL K1
Subgoal 1.2.2.2.1 is:
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain mell_weaken_q.
Subgoal 1.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 JJ2 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ2 KK1 KK2
H26 : adj JJ2 A1 U1
H27 : adj U1 A J1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 A1 V
H31 : merge JJ2 KK LL3
H32 : merge LL3 KK1 LL2
H33 : mell QQL K1
============================
mell QQL LL
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H13 : adj KK1 B1 K1
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H24 : adj KK3 A KK1
H25 : merge JJ1 KK3 KK2
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_swap to *H24 *H13.
Subgoal 1.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert 0 exists V, merge U1 KK V.
Subgoal 1.2.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
============================
exists V, merge U1 KK V
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_1_is_list to H27.
Subgoal 1.2.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : is_list U1
============================
exists V, merge U1 KK V
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_1_is_list to H6.
Subgoal 1.2.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : is_list U1
H29 : is_list KK
============================
exists V, merge U1 KK V
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_exists to H28 H29.
Subgoal 1.2.2.2.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 L
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : is_list U1
H29 : is_list KK
H30 : merge U1 KK L
============================
exists V, merge U1 KK V
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
Ht : exists V, merge U1 KK V
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply IHht2 to H4 H27 H6 H7 H28.
Subgoal 1.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_1 to H28 H26.
Subgoal 1.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H31 : merge KK3 KK LL3
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < assert 0 merge JJ1 LL3 LL2.
Subgoal 1.2.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H31 : merge KK3 KK LL3
============================
merge JJ1 LL3 LL2
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_1_is_list to H25.
Subgoal 1.2.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H31 : merge KK3 KK LL3
H32 : is_list JJ1
============================
merge JJ1 LL3 LL2
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_3_is_list to H31.
Subgoal 1.2.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H31 : merge KK3 KK LL3
H32 : is_list JJ1
H33 : is_list LL3
============================
merge JJ1 LL3 LL2
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_exists to *H32 *H33.
Subgoal 1.2.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3 L
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H31 : merge KK3 KK LL3
H34 : merge JJ1 LL3 L
============================
merge JJ1 LL3 LL2
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_assoc to *H25 *H31 H34 *H22.
Subgoal 1.2.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3 L
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H34 : merge JJ1 LL3 L
H35 : perm L LL2
============================
merge JJ1 LL3 LL2
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain perm_merge_3.
Subgoal 1.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H31 : merge KK3 KK LL3
H32 : merge JJ1 LL3 LL2
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < assert mell QQL J1.
Subgoal 1.2.2.2.2.3:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H31 : merge KK3 KK LL3
H32 : merge JJ1 LL3 LL2
============================
mell QQL J1
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H4.
Subgoal 1.2.2.2.2.3:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3 K2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H31 : merge KK3 KK LL3
H32 : merge JJ1 LL3 LL2
H33 : merge QL K2 QQL
============================
mell QQL J1
Subgoal 1.2.2.2.2 is:
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain mell_weaken_q.
Subgoal 1.2.2.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 JJ1 KK1 J1 K1 KK2 U LL2 KK3 U1 V
LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (tens A1 B1) J
H10 : merge JJ1 KK1 LL1
H11 : adj JJ1 A1 J1
H12 : mell QL J1 **
H14 : mell QL K1 **
IHht1 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHht2 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H16 : adj KK2 A LL1
H17 : adj KK2 (tens A1 B1) U
H18 : adj U A J
H20 : merge U KK LL
H21 : adj LL2 (tens A1 B1) LL
H22 : merge KK2 KK LL2
H25 : merge JJ1 KK3 KK2
H26 : adj KK3 B1 U1
H27 : adj U1 A K1
H28 : merge U1 KK V
H29 : mell QQL V
H30 : adj LL3 B1 V
H31 : merge KK3 KK LL3
H32 : merge JJ1 LL3 LL2
H33 : mell QQL J1
============================
mell QQL LL
Subgoal 1.2.3 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.3:
Variables: A B QL QQL JJ KK K LL
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (one :: nil) @@
H4 : incl QL QQL
H5 : adj JJ A (one :: nil)
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : is_list QL
============================
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H5.
Subgoal 1.2.3.1:
Variables: B QL QQL KK K LL
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual one B @
H2 : mell QL (one :: nil) @@
H4 : incl QL QQL
H6 : adj KK B K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : is_list QL
H10 : is_fm one
H11 : is_list nil
============================
mell QQL LL
Subgoal 1.2.3.2 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H1.
Subgoal 1.2.3.1:
Variables: QL QQL KK K LL
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (one :: nil) @@
H4 : incl QL QQL
H6 : adj KK bot K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : is_list QL
H10 : is_fm one
H11 : is_list nil
============================
mell QQL LL
Subgoal 1.2.3.2 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_nil_perm to *H8.
Subgoal 1.2.3.1:
Variables: QL QQL KK K LL
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (one :: nil) @@
H4 : incl QL QQL
H6 : adj KK bot K
H7 : mell QQL K
H9 : is_list QL
H10 : is_fm one
H11 : is_list nil
H12 : perm KK LL
============================
mell QQL LL
Subgoal 1.2.3.2 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply bot_inv to *H7 *H6.
Subgoal 1.2.3.1:
Variables: QL QQL KK K LL
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (one :: nil) @@
H4 : incl QL QQL
H9 : is_list QL
H10 : is_fm one
H11 : is_list nil
H12 : perm KK LL
H13 : mell QQL KK
============================
mell QQL LL
Subgoal 1.2.3.2 is:
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain mell_perm_l.
Subgoal 1.2.3.2:
Variables: A B QL QQL KK K LL K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (one :: nil) @@
H4 : incl QL QQL
H6 : adj KK B K
H7 : mell QQL K
H8 : merge (one :: K1) KK LL
H9 : is_list QL
H10 : is_fm one
H11 : adj K1 A nil
============================
mell QQL LL
Subgoal 1.2.4 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H11.
Subgoal 1.2.4:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
H12 : mell QL K1 **
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : apply IHht to H1 *H12 _ with W = light.
Subgoal 1.2.4:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
IH : light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, K1 = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : case IH.
Subgoal 1.2.4:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_same_result_diff to H5 H9.
Subgoal 1.2.4:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H13 : A = par A1 B1 /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H13.
Subgoal 1.2.4.1:
Variables: B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual (par A1 B1) B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (par A1 B1) J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ (par A1 B1) K1 ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
H14 : perm JJ LL1
============================
mell QQL LL
Subgoal 1.2.4.2 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H1.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H14 : adj KK1 A LL1
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_swap to H14 H9.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H14 : adj KK1 A LL1
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_same_result to H5 H16.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H14 : adj KK1 A LL1
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H17 : perm JJ U
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply perm_merge_1 to *H8 *H17.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H14 : adj KK1 A LL1
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_1 to H18 H15.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
H10 : adj LL1 A1 J1
H11 : adj J1 B1 K1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H14 : adj KK1 A LL1
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_swap to *H14 *H10.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
H11 : adj J1 B1 K1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H22 : adj U1 A J1
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_swap to *H22 *H11.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert exists LL3, adj LL2 A1 LL3.
Subgoal 1.2.4.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
============================
exists LL3, adj LL2 A1 LL3
Subgoal 1.2.4.2 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_2_is_o to H21.
Subgoal 1.2.4.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : is_fm A1
============================
exists LL3, adj LL2 A1 LL3
Subgoal 1.2.4.2 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_3_is_list to H20.
Subgoal 1.2.4.2.1:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : is_fm A1
H26 : is_list LL2
============================
exists LL3, adj LL2 A1 LL3
Subgoal 1.2.4.2 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain adj_exists.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
Ht : exists LL3, adj LL2 A1 LL3
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2 LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : adj LL2 A1 LL3
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert exists LL4, adj LL3 B1 LL4.
Subgoal 1.2.4.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2 LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : adj LL2 A1 LL3
============================
exists LL4, adj LL3 B1 LL4
Subgoal 1.2.4.2 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_2_is_o to H23.
Subgoal 1.2.4.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2 LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : adj LL2 A1 LL3
H26 : is_fm B1
============================
exists LL4, adj LL3 B1 LL4
Subgoal 1.2.4.2 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_3_is_list to H25.
Subgoal 1.2.4.2.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2 LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : adj LL2 A1 LL3
H26 : is_fm B1
H27 : is_list LL3
============================
exists LL4, adj LL3 B1 LL4
Subgoal 1.2.4.2 is:
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain adj_exists.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2 LL3
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : adj LL2 A1 LL3
Ht : exists LL4, adj LL3 B1 LL4
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2 LL3 LL4
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : adj LL2 A1 LL3
H26 : adj LL3 B1 LL4
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < assert merge U2 KK LL4.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2 LL3 LL4
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : adj LL2 A1 LL3
H26 : adj LL3 B1 LL4
H27 : merge U2 KK LL4
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply IH to _ H24 H6 H7 H27.
Subgoal 1.2.4.2:
Variables: A B QL J QQL JJ KK K LL A1 B1 LL1 J1 K1 KK1 U LL2 U1 U2 LL3 LL4
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (par A1 B1) J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A K1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H15 : adj KK1 (par A1 B1) U
H16 : adj U A J
H18 : merge U KK LL
H19 : adj LL2 (par A1 B1) LL
H20 : merge KK1 KK LL2
H21 : adj KK1 A1 U1
H23 : adj U1 B1 U2
H24 : adj U2 A K1
H25 : adj LL2 A1 LL3
H26 : adj LL3 B1 LL4
H27 : merge U2 KK LL4
H28 : mell QQL LL4
============================
mell QQL LL
Subgoal 1.2.5 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.5:
Variables: A B QL J QQL JJ KK K LL LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 bot J
H10 : mell QL LL1 **
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : apply IHht to H1 *H10 _ with W = light.
Subgoal 1.2.5:
Variables: A B QL J QQL JJ KK K LL LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 bot J
IH : light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, LL1 = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : case IH.
Subgoal 1.2.5:
Variables: A B QL J QQL JJ KK K LL LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 bot J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_same_result_diff to H5 H9.
Subgoal 1.2.5:
Variables: A B QL J QQL JJ KK K LL LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 bot J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H11 : A = bot /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H11.
Subgoal 1.2.5.1:
Variables: B QL J QQL JJ KK K LL LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual bot B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ bot J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 bot J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ bot LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : perm JJ LL1
============================
mell QQL LL
Subgoal 1.2.5.2 is:
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H1.
Subgoal 1.2.5.2:
Variables: A B QL J QQL JJ KK K LL LL1 KK1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 bot J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj KK1 A LL1
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_swap to H12 H9.
Subgoal 1.2.5.2:
Variables: A B QL J QQL JJ KK K LL LL1 KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 bot J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj KK1 A LL1
H13 : adj KK1 bot U
H14 : adj U A J
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_same_result to H5 H14.
Subgoal 1.2.5.2:
Variables: A B QL J QQL JJ KK K LL LL1 KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 bot J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj KK1 A LL1
H13 : adj KK1 bot U
H14 : adj U A J
H15 : perm JJ U
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply perm_merge_1 to *H8 *H15.
Subgoal 1.2.5.2:
Variables: A B QL J QQL JJ KK K LL LL1 KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 bot J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj KK1 A LL1
H13 : adj KK1 bot U
H14 : adj U A J
H16 : merge U KK LL
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_1 to H16 H13.
Subgoal 1.2.5.2:
Variables: A B QL J QQL JJ KK K LL LL1 KK1 U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 bot J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj KK1 A LL1
H13 : adj KK1 bot U
H14 : adj U A J
H16 : merge U KK LL
H17 : adj LL2 bot LL
H18 : merge KK1 KK LL2
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply IH to H4 H12 H6 H7 H18.
Subgoal 1.2.5.2:
Variables: A B QL J QQL JJ KK K LL LL1 KK1 U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 bot J
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj KK1 A LL1
H13 : adj KK1 bot U
H14 : adj U A J
H16 : merge U KK LL
H17 : adj LL2 bot LL
H18 : merge KK1 KK LL2
H19 : mell QQL LL2
============================
mell QQL LL
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.6:
Variables: A B QL QQL JJ KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H5 : adj JJ A (bang A1 :: nil)
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : mell QL (A1 :: nil) **
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert JJ = nil.
Subgoal 1.2.6.1:
Variables: A B QL QQL JJ KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H5 : adj JJ A (bang A1 :: nil)
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : mell QL (A1 :: nil) **
============================
JJ = nil
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H5.
Subgoal 1.2.6.1.1:
Variables: B QL QQL KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual (bang A1) B @
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK B K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
============================
nil = nil
Subgoal 1.2.6.1.2 is:
bang A1 :: K1 = nil
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.6.1.2:
Variables: A B QL QQL KK K LL A1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK B K
H7 : mell QQL K
H8 : merge (bang A1 :: K1) KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : adj K1 A nil
============================
bang A1 :: K1 = nil
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H11.
Subgoal 1.2.6:
Variables: A B QL QQL JJ KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H5 : adj JJ A (bang A1 :: nil)
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : mell QL (A1 :: nil) **
Ht : JJ = nil
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.6:
Variables: A B QL QQL KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H5 : adj nil A (bang A1 :: nil)
H6 : adj KK B K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H5.
Subgoal 1.2.6:
Variables: B QL QQL KK K LL A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual (bang A1) B @
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK B K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H1.
Subgoal 1.2.6:
Variables: QL QQL KK K LL A1 AA
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm AA) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 AA *
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < rename AA to B1.
Subgoal 1.2.6:
Variables: QL QQL KK K LL A1 B1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : apply IHrk to H12 H9 _ with W = heavy.
Subgoal 1.2.6:
Variables: QL QQL KK K LL A1 B1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A1 (A1 :: nil) ->
adj KK B1 K -> mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K)
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : case IH.
Subgoal 1.2.6:
Variables: QL QQL KK K LL A1 B1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert exists QQ, adj QQL B1 QQ /\ mell QQ KK.
Subgoal 1.2.6.2:
Variables: QL QQL KK K LL A1 B1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
============================
exists QQ, adj QQL B1 QQ /\ mell QQ KK
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply dual_is to H12.
Subgoal 1.2.6.2:
Variables: QL QQL KK K LL A1 B1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
H13 : is_fm A1
H14 : is_fm B1
============================
exists QQ, adj QQL B1 QQ /\ mell QQ KK
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply mell_is to H7.
Subgoal 1.2.6.2:
Variables: QL QQL KK K LL A1 B1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
H13 : is_fm A1
H14 : is_fm B1
H15 : is_list QQL
H16 : is_list K
============================
exists QQ, adj QQL B1 QQ /\ mell QQ KK
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_exists to H14 H15.
Subgoal 1.2.6.2:
Variables: QL QQL KK K LL A1 B1 M
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
H13 : is_fm A1
H14 : is_fm B1
H15 : is_list QQL
H16 : is_list K
H17 : adj QQL B1 M
============================
exists QQ, adj QQL B1 QQ /\ mell QQ KK
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply qm_inv to H7 H6 H17.
Subgoal 1.2.6.2:
Variables: QL QQL KK K LL A1 B1 M
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
H13 : is_fm A1
H14 : is_fm B1
H15 : is_list QQL
H16 : is_list K
H17 : adj QQL B1 M
H18 : mell M KK
============================
exists QQ, adj QQL B1 QQ /\ mell QQ KK
Subgoal 1.2.6 is:
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.6:
Variables: QL QQL KK K LL A1 B1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
Ht : exists QQ, adj QQL B1 QQ /\ mell QQ KK
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.6:
Variables: QL QQL KK K LL A1 B1 QQ
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H4 : incl QL QQL
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
H13 : adj QQL B1 QQ
H14 : mell QQ KK
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply IH to _ *H4 *H13 *H14.
Subgoal 1.2.6:
Variables: QL QQL KK K LL A1 B1 QQ
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H6 : adj KK (qm B1) K
H7 : mell QQL K
H8 : merge nil KK LL
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
H15 : mell QQL KK
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_nil_perm to *H8.
Subgoal 1.2.6:
Variables: QL QQL KK K LL A1 B1 QQ
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H2 : mell QL (bang A1 :: nil) @@
H6 : adj KK (qm B1) K
H7 : mell QQL K
H9 : mell QL (A1 :: nil) **
H10 : is_fm (bang A1)
H11 : is_list nil
H12 : dual A1 B1 *
IH : forall QQL QQ K, A1 :: nil = A1 :: nil -> incl QL QQL ->
adj QQL B1 QQ -> mell QQ K -> mell QQL K
H15 : mell QQL KK
H16 : perm KK LL
============================
mell QQL LL
Subgoal 1.2.7 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain mell_perm_l with K = KK.
Subgoal 1.2.7:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_same_result_diff to H5 H9.
Subgoal 1.2.7:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H12 : A = qm A1 /\ perm JJ LL1 \/ (exists KK, adj KK A LL1)
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H12.
Subgoal 1.2.7.1:
Variables: B QL J QQL JJ KK K LL A1 LL1 QK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual (qm A1) B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ (qm A1) J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : perm JJ LL1
============================
mell QQL LL
Subgoal 1.2.7.2 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H1.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_swap to H13 H9.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_same_result to H5 H15.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply perm_merge_1 to *H8 H16.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : apply IHht to H1 H11 _ with W = light.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : light = light /\
(forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, LL1 = A :: nil -> incl QK QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : case IH.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_1 to H17 H14.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert exists QQK, adj QQL A1 QQK /\ incl QK QQK.
Subgoal 1.2.7.2.1:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
============================
exists QQK, adj QQL A1 QQK /\ incl QK QQK
Subgoal 1.2.7.2 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_2_is_o to H10.
Subgoal 1.2.7.2.1:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
H20 : is_fm A1
============================
exists QQK, adj QQL A1 QQK /\ incl QK QQK
Subgoal 1.2.7.2 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H4.
Subgoal 1.2.7.2.1:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
H20 : is_fm A1
H21 : merge QL K1 QQL
============================
exists QQK, adj QQL A1 QQK /\ incl QK QQK
Subgoal 1.2.7.2 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_3_is_list to H21.
Subgoal 1.2.7.2.1:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
H20 : is_fm A1
H21 : merge QL K1 QQL
H22 : is_list QQL
============================
exists QQK, adj QQL A1 QQK /\ incl QK QQK
Subgoal 1.2.7.2 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_exists to H20 H22.
Subgoal 1.2.7.2.1:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2 K1 M
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
H20 : is_fm A1
H21 : merge QL K1 QQL
H22 : is_list QQL
H23 : adj QQL A1 M
============================
exists QQK, adj QQL A1 QQK /\ incl QK QQK
Subgoal 1.2.7.2 is:
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
Ht : exists QQK, adj QQL A1 QQK /\ incl QK QQK
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2 QQK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
H20 : adj QQL A1 QQK
H21 : incl QK QQK
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply mell_weaken_q1 to *H7 H20.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2 QQK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
IH : forall QQL JJ KK K LL, incl QK QQL -> adj JJ A LL1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
H20 : adj QQL A1 QQK
H21 : incl QK QQK
H22 : mell QQK K
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : apply *IH to *H21 H13 H6 H22 H19.
Subgoal 1.2.7.2:
Variables: A B QL J QQL JJ KK K LL A1 LL1 QK KK1 U LL2 QQK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H9 : adj LL1 (qm A1) J
H10 : adj QL A1 QK
H11 : mell QK LL1 **
H13 : adj KK1 A LL1
H14 : adj KK1 (qm A1) U
H15 : adj U A J
H16 : perm JJ U
H17 : merge U KK LL
H18 : adj LL2 (qm A1) LL
H19 : merge KK1 KK LL2
H20 : adj QQL A1 QQK
H22 : mell QQK K
IH : mell QQK LL2
============================
mell QQL LL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
H11 : mell QL J1 **
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : apply IHht to H1 *H11 _ with W = light.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, J1 = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < IH : case IH.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_swap to H5 H10.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert 0 exists LLA1, adj LL A1 LLA1.
Subgoal 1.2.8.1:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
============================
exists LLA1, adj LL A1 LLA1
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply adj_2_is_o to H9.
Subgoal 1.2.8.1:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : is_fm A1
============================
exists LLA1, adj LL A1 LLA1
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_3_is_list to H8.
Subgoal 1.2.8.1:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : is_fm A1
H15 : is_list LL
============================
exists LLA1, adj LL A1 LLA1
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < backchain adj_exists.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
Ht : exists LLA1, adj LL A1 LLA1
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U LLA1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : adj LL A1 LLA1
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < assert merge U KK LLA1.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U LLA1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : adj LL A1 LLA1
H15 : merge U KK LLA1
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply IH to H4 H13 H6 H7 H15.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U LLA1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : adj LL A1 LLA1
H15 : merge U KK LLA1
H16 : mell QQL LLA1
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < Ht : assert exists QQ, adj QQ A1 QQL.
Subgoal 1.2.8.2:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U LLA1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : adj LL A1 LLA1
H15 : merge U KK LLA1
H16 : mell QQL LLA1
============================
exists QQ, adj QQ A1 QQL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case H4.
Subgoal 1.2.8.2:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U LLA1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : adj LL A1 LLA1
H15 : merge U KK LLA1
H16 : mell QQL LLA1
H17 : merge QL K1 QQL
============================
exists QQ, adj QQ A1 QQL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < apply merge_unadj_1 to H17 H9.
Subgoal 1.2.8.2:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U LLA1 K1 LL1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : adj LL A1 LLA1
H15 : merge U KK LLA1
H16 : mell QQL LLA1
H17 : merge QL K1 QQL
H18 : adj LL1 A1 QQL
H19 : merge QK K1 LL1
============================
exists QQ, adj QQ A1 QQL
Subgoal 1.2.8 is:
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U LLA1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : adj LL A1 LLA1
H15 : merge U KK LLA1
H16 : mell QQL LLA1
Ht : exists QQ, adj QQ A1 QQL
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < case Ht.
Subgoal 1.2.8:
Variables: A B QL J QQL JJ KK K LL A1 QK J1 U LLA1 QQ
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : incl QL QQL
H5 : adj JJ A J
H6 : adj KK B K
H7 : mell QQL K
H8 : merge JJ KK LL
H9 : adj QK A1 QL
H10 : adj J A1 J1
IH : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J1 -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H12 : adj JJ A1 U
H13 : adj U A J1
H14 : adj LL A1 LLA1
H15 : merge U KK LLA1
H16 : mell QQL LLA1
H17 : adj QQ A1 QQL
============================
mell QQL LL
Subgoal 2 is:
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < search.
Subgoal 2:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : is_weight light ***
============================
heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < right.
Subgoal 2:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : is_weight light ***
============================
heavy = heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
$cut_admit < split.
Subgoal 2.1:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : is_weight light ***
============================
heavy = heavy
Subgoal 2.2 is:
forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ -> mell QQ K ->
mell QQL K
$cut_admit < search.
Subgoal 2.2:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHwt : forall A B QL J W, dual A B @ -> mell QL J @@ -> is_weight W *** ->
W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H4 : is_weight light ***
============================
forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ -> mell QQ K ->
mell QQL K
$cut_admit < apply *IHwt to H1 H2 *H4.
Subgoal 2.2:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
H5 : light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ -> mell QQ K ->
mell QQL K
$cut_admit < Hc : case H5.
Subgoal 2.2:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ -> mell QQ K ->
mell QQL K
$cut_admit < IHqc : induction on 4.
Subgoal 2.2:
Variables: A B QL J
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
============================
forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K @@@ -> mell QQL K
$cut_admit < intros.
Subgoal 2.2:
Variables: A B QL J QQL QQ K
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL J @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H6 : J = A :: nil
H7 : incl QL QQL
H8 : adj QQL B QQ
H9 : mell QQ K @@@
============================
mell QQL K
$cut_admit < case H6.
Subgoal 2.2:
Variables: A B QL QQL QQ K
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H9 : mell QQ K @@@
============================
mell QQL K
$cut_admit < case H9.
Subgoal 2.2.1:
Variables: A B QL QQL QQ K A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : is_list QQ
H11 : adj (natom A1 :: nil) (atom A1) K
============================
mell QQL K
Subgoal 2.2.2 is:
mell QQL K
Subgoal 2.2.3 is:
mell QQL (one :: nil)
Subgoal 2.2.4 is:
mell QQL K
Subgoal 2.2.5 is:
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply adj_1_is_list to H8.
Subgoal 2.2.1:
Variables: A B QL QQL QQ K A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : is_list QQ
H11 : adj (natom A1 :: nil) (atom A1) K
H12 : is_list QQL
============================
mell QQL K
Subgoal 2.2.2 is:
mell QQL K
Subgoal 2.2.3 is:
mell QQL (one :: nil)
Subgoal 2.2.4 is:
mell QQL K
Subgoal 2.2.5 is:
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.2:
Variables: A B QL QQL QQ K A1 B1 LL JJ KK J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj LL (tens A1 B1) K
H11 : merge JJ KK LL
H12 : adj JJ A1 J1
H13 : mell QQ J1 ***
H14 : adj KK B1 K1
H15 : mell QQ K1 ***
============================
mell QQL K
Subgoal 2.2.3 is:
mell QQL (one :: nil)
Subgoal 2.2.4 is:
mell QQL K
Subgoal 2.2.5 is:
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply IHqc to _ H7 H8 *H13.
Subgoal 2.2.2:
Variables: A B QL QQL QQ K A1 B1 LL JJ KK J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj LL (tens A1 B1) K
H11 : merge JJ KK LL
H12 : adj JJ A1 J1
H14 : adj KK B1 K1
H15 : mell QQ K1 ***
H16 : mell QQL J1
============================
mell QQL K
Subgoal 2.2.3 is:
mell QQL (one :: nil)
Subgoal 2.2.4 is:
mell QQL K
Subgoal 2.2.5 is:
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply IHqc to _ H7 H8 *H15.
Subgoal 2.2.2:
Variables: A B QL QQL QQ K A1 B1 LL JJ KK J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj LL (tens A1 B1) K
H11 : merge JJ KK LL
H12 : adj JJ A1 J1
H14 : adj KK B1 K1
H16 : mell QQL J1
H17 : mell QQL K1
============================
mell QQL K
Subgoal 2.2.3 is:
mell QQL (one :: nil)
Subgoal 2.2.4 is:
mell QQL K
Subgoal 2.2.5 is:
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.3:
Variables: A B QL QQL QQ
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : is_list QQ
============================
mell QQL (one :: nil)
Subgoal 2.2.4 is:
mell QQL K
Subgoal 2.2.5 is:
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply adj_1_is_list to H8.
Subgoal 2.2.3:
Variables: A B QL QQL QQ
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : is_list QQ
H11 : is_list QQL
============================
mell QQL (one :: nil)
Subgoal 2.2.4 is:
mell QQL K
Subgoal 2.2.5 is:
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.4:
Variables: A B QL QQL QQ K A1 B1 LL J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj LL (par A1 B1) K
H11 : adj LL A1 J1
H12 : adj J1 B1 K1
H13 : mell QQ K1 ***
============================
mell QQL K
Subgoal 2.2.5 is:
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply IHqc to _ H7 H8 *H13.
Subgoal 2.2.4:
Variables: A B QL QQL QQ K A1 B1 LL J1 K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj LL (par A1 B1) K
H11 : adj LL A1 J1
H12 : adj J1 B1 K1
H14 : mell QQL K1
============================
mell QQL K
Subgoal 2.2.5 is:
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.5:
Variables: A B QL QQL QQ K LL
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj LL bot K
H11 : mell QQ LL ***
============================
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply IHqc to _ H7 H8 *H11.
Subgoal 2.2.5:
Variables: A B QL QQL QQ K LL
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj LL bot K
H12 : mell QQL LL
============================
mell QQL K
Subgoal 2.2.6 is:
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.6:
Variables: A B QL QQL QQ A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : mell QQ (A1 :: nil) ***
============================
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply IHqc to _ H7 H8 *H10.
Subgoal 2.2.6:
Variables: A B QL QQL QQ A1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : mell QQL (A1 :: nil)
============================
mell QQL (bang A1 :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.7:
Variables: A B QL QQL QQ K A1 LL QK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj LL (qm A1) K
H11 : adj QQ A1 QK
H12 : mell QK LL ***
============================
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply adj_swap to *H8 *H11.
Subgoal 2.2.7:
Variables: A B QL QQL QQ K A1 LL QK U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
============================
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < assert incl QL U.
Subgoal 2.2.7.1:
Variables: A B QL QQL QQ K A1 LL QK U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
============================
incl QL U
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < unfold.
Subgoal 2.2.7.1:
Variables: A B QL QQL QQ K A1 LL QK U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
============================
exists K, merge QL K U
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < case H7.
Subgoal 2.2.7.1:
Variables: A B QL QQL QQ K A1 LL QK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : merge QL K1 QQL
============================
exists K, merge QL K U
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < Hkk : assert exists KK, adj K1 A1 KK.
Subgoal 2.2.7.1.1:
Variables: A B QL QQL QQ K A1 LL QK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : merge QL K1 QQL
============================
exists KK, adj K1 A1 KK
Subgoal 2.2.7.1 is:
exists K, merge QL K U
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply merge_2_is_list to H15.
Subgoal 2.2.7.1.1:
Variables: A B QL QQL QQ K A1 LL QK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : merge QL K1 QQL
H16 : is_list K1
============================
exists KK, adj K1 A1 KK
Subgoal 2.2.7.1 is:
exists K, merge QL K U
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply adj_2_is_o to H13.
Subgoal 2.2.7.1.1:
Variables: A B QL QQL QQ K A1 LL QK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : merge QL K1 QQL
H16 : is_list K1
H17 : is_fm A1
============================
exists KK, adj K1 A1 KK
Subgoal 2.2.7.1 is:
exists K, merge QL K U
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.7.1:
Variables: A B QL QQL QQ K A1 LL QK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : merge QL K1 QQL
Hkk : exists KK, adj K1 A1 KK
============================
exists K, merge QL K U
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < Hkk : case Hkk.
Subgoal 2.2.7.1:
Variables: A B QL QQL QQ K A1 LL QK U K1 KK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : merge QL K1 QQL
Hkk : adj K1 A1 KK
============================
exists K, merge QL K U
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.7:
Variables: A B QL QQL QQ K A1 LL QK U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H10 : adj LL (qm A1) K
H12 : mell QK LL ***
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : incl QL U
============================
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply IHqc to _ H15 H14 *H12.
Subgoal 2.2.7:
Variables: A B QL QQL QQ K A1 LL QK U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H10 : adj LL (qm A1) K
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : incl QL U
H16 : mell U LL
============================
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < assert mell QQL (A :: nil).
Subgoal 2.2.7.2:
Variables: A B QL QQL QQ K A1 LL QK U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H10 : adj LL (qm A1) K
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : incl QL U
H16 : mell U LL
============================
mell QQL (A :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < case H7.
Subgoal 2.2.7.2:
Variables: A B QL QQL QQ K A1 LL QK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H10 : adj LL (qm A1) K
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : incl QL U
H16 : mell U LL
H17 : merge QL K1 QQL
============================
mell QQL (A :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < apply mell_weaken_q to *H2 *H17.
Subgoal 2.2.7.2:
Variables: A B QL QQL QQ K A1 LL QK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H10 : adj LL (qm A1) K
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : incl QL U
H16 : mell U LL
H18 : mell QQL (A :: nil)
============================
mell QQL (A :: nil)
Subgoal 2.2.7 is:
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.7:
Variables: A B QL QQL QQ K A1 LL QK U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H10 : adj LL (qm A1) K
H13 : adj QQL A1 U
H14 : adj U B QK
H15 : incl QL U
H16 : mell U LL
H17 : mell QQL (A :: nil)
============================
mell QQL K
Subgoal 2.2.8 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.8:
Variables: A B QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
============================
mell QQL K
$cut_admit < apply adj_same_result_diff to H8 H10.
Subgoal 2.2.8:
Variables: A B QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H13 : B = A1 /\ perm QQL QK \/ (exists KK, adj KK B QK)
============================
mell QQL K
$cut_admit < case H13.
Subgoal 2.2.8.1:
Variables: A QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A A1 @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK A1 K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL ->
adj QQL A1 QQ -> mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL A1 QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H14 : perm QQL QK
============================
mell QQL K
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < apply IHqc to _ H7 H8 *H12.
Subgoal 2.2.8.1:
Variables: A QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A A1 @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK A1 K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL ->
adj QQL A1 QQ -> mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL A1 QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H14 : perm QQL QK
H15 : mell QQL J1
============================
mell QQL K
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < apply dual_is to H1.
Subgoal 2.2.8.1:
Variables: A QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A A1 @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK A1 K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL ->
adj QQL A1 QQ -> mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL A1 QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H14 : perm QQL QK
H15 : mell QQL J1
H16 : is_fm A
H17 : is_fm A1
============================
mell QQL K
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < assert adj nil A (A :: nil).
Subgoal 2.2.8.1:
Variables: A QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A A1 @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK A1 K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL ->
adj QQL A1 QQ -> mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL A1 QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H14 : perm QQL QK
H15 : mell QQL J1
H16 : is_fm A
H17 : is_fm A1
H18 : adj nil A (A :: nil)
============================
mell QQL K
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < assert merge nil K K.
Subgoal 2.2.8.1.1:
Variables: A QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A A1 @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK A1 K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL ->
adj QQL A1 QQ -> mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL A1 QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H14 : perm QQL QK
H15 : mell QQL J1
H16 : is_fm A
H17 : is_fm A1
H18 : adj nil A (A :: nil)
============================
merge nil K K
Subgoal 2.2.8.1 is:
mell QQL K
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < apply adj_1_is_list to H11.
Subgoal 2.2.8.1.1:
Variables: A QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A A1 @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK A1 K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL ->
adj QQL A1 QQ -> mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL A1 QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H14 : perm QQL QK
H15 : mell QQL J1
H16 : is_fm A
H17 : is_fm A1
H18 : adj nil A (A :: nil)
H19 : is_list K
============================
merge nil K K
Subgoal 2.2.8.1 is:
mell QQL K
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < backchain merge_nil_equal.
Subgoal 2.2.8.1:
Variables: A QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A A1 @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK A1 K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL ->
adj QQL A1 QQ -> mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL A1 QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H14 : perm QQL QK
H15 : mell QQL J1
H16 : is_fm A
H17 : is_fm A1
H18 : adj nil A (A :: nil)
H19 : merge nil K K
============================
mell QQL K
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < apply Hc to H7 H18 H11 H15 H19.
Subgoal 2.2.8.1:
Variables: A QL QQL QQ K A1 QK J1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A A1 @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK A1 K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL ->
adj QQL A1 QQ -> mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL A1 QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H14 : perm QQL QK
H15 : mell QQL J1
H16 : is_fm A
H17 : is_fm A1
H18 : adj nil A (A :: nil)
H19 : merge nil K K
H20 : mell QQL K
============================
mell QQL K
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 KK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H14 : adj KK B QK
============================
mell QQL K
$cut_admit < rename KK to QKK.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H10 : adj QK A1 QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H14 : adj QKK B QK
============================
mell QQL K
$cut_admit < apply adj_swap to *H14 *H10.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
============================
mell QQL K
$cut_admit < apply adj_same_result to H8 H16.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK U
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H17 : perm QQL U
============================
mell QQL K
$cut_admit < case H7 (keep).
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
H2 : mell QL (A :: nil) @@
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H17 : perm QQL U
H18 : merge QL K1 QQL
============================
mell QQL K
$cut_admit < apply mell_weaken_q to *H2 *H18.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H17 : perm QQL U
H19 : mell QQL (A :: nil)
============================
mell QQL K
$cut_admit < apply mell_perm_q to *H19 H17.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H17 : perm QQL U
H20 : mell U (A :: nil)
============================
mell QQL K
$cut_admit < apply 0 IHqc to _ _ H16 H12 with QQL = U.
Subgoal 2.2.8.2.1:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H17 : perm QQL U
H20 : mell U (A :: nil)
============================
incl QL U
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < case H7.
Subgoal 2.2.8.2.1:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1 K2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H17 : perm QQL U
H20 : mell U (A :: nil)
H21 : merge QL K2 QQL
============================
incl QL U
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < unfold.
Subgoal 2.2.8.2.1:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1 K2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H17 : perm QQL U
H20 : mell U (A :: nil)
H21 : merge QL K2 QQL
============================
exists K, merge QL K U
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < apply perm_merge_3 to H21 H17.
Subgoal 2.2.8.2.1:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1 K2
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H17 : perm QQL U
H20 : mell U (A :: nil)
H21 : merge QL K2 QQL
H22 : merge QL K2 U
============================
exists K, merge QL K U
Subgoal 2.2.8.2 is:
mell QQL K
$cut_admit < search.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H17 : perm QQL U
H20 : mell U (A :: nil)
H21 : mell U J1
============================
mell QQL K
$cut_admit < apply perm_sym to *H17.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H20 : mell U (A :: nil)
H21 : mell U J1
H22 : perm U QQL
============================
mell QQL K
$cut_admit < apply mell_perm_q to *H21 H22.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H15 : adj QKK A1 U
H16 : adj U B QQ
H20 : mell U (A :: nil)
H22 : perm U QQL
H23 : mell QQL J1
============================
mell QQL K
$cut_admit < apply adj_perm to *H22 *H15.
Subgoal 2.2.8.2:
Variables: A B QL QQL QQ K A1 QK J1 QKK U K1 KK
IHrk : forall A B QL J W, dual A B * -> mell QL J -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
IHht : forall A B QL J W, dual A B @ -> mell QL J ** -> is_weight W -> W =
light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
W =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
H1 : dual A B @
Hc : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL
IHqc : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K *** -> mell QQL K
H7 : incl QL QQL
H8 : adj QQL B QQ
H11 : adj K A1 J1
H12 : mell QQ J1 ***
H16 : adj U B QQ
H20 : mell U (A :: nil)
H23 : mell QQL J1
H24 : adj KK A1 QQL
============================
mell QQL K
$cut_admit < search.
Proof completed.
Abella < Theorem cut_admit_linear :
forall A B JJ J KK K QL LL, dual A B -> adj JJ A J -> mell QL J ->
adj KK B K -> mell QL K -> merge JJ KK LL -> mell QL LL.
============================
forall A B JJ J KK K QL LL, dual A B -> adj JJ A J -> mell QL J ->
adj KK B K -> mell QL K -> merge JJ KK LL -> mell QL LL
cut_admit_linear < intros.
Variables: A B JJ J KK K QL LL
H1 : dual A B
H2 : adj JJ A J
H3 : mell QL J
H4 : adj KK B K
H5 : mell QL K
H6 : merge JJ KK LL
============================
mell QL LL
cut_admit_linear < apply mell_is to H3.
Variables: A B JJ J KK K QL LL
H1 : dual A B
H2 : adj JJ A J
H3 : mell QL J
H4 : adj KK B K
H5 : mell QL K
H6 : merge JJ KK LL
H7 : is_list QL
H8 : is_list J
============================
mell QL LL
cut_admit_linear < apply $cut_admit to H1 H3 _ with W = light.
Variables: A B JJ J KK K QL LL
H1 : dual A B
H2 : adj JJ A J
H3 : mell QL J
H4 : adj KK B K
H5 : mell QL K
H6 : merge JJ KK LL
H7 : is_list QL
H8 : is_list J
H9 : light = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
light =
heavy /\
(forall QQL QQ K, J = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K)
============================
mell QL LL
cut_admit_linear < case H9.
Variables: A B JJ J KK K QL LL
H1 : dual A B
H2 : adj JJ A J
H3 : mell QL J
H4 : adj KK B K
H5 : mell QL K
H6 : merge JJ KK LL
H7 : is_list QL
H8 : is_list J
H10 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
mell QL LL
cut_admit_linear < assert incl QL QL.
Subgoal 1:
Variables: A B JJ J KK K QL LL
H1 : dual A B
H2 : adj JJ A J
H3 : mell QL J
H4 : adj KK B K
H5 : mell QL K
H6 : merge JJ KK LL
H7 : is_list QL
H8 : is_list J
H10 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
incl QL QL
Subgoal is:
mell QL LL
cut_admit_linear < unfold.
Subgoal 1:
Variables: A B JJ J KK K QL LL
H1 : dual A B
H2 : adj JJ A J
H3 : mell QL J
H4 : adj KK B K
H5 : mell QL K
H6 : merge JJ KK LL
H7 : is_list QL
H8 : is_list J
H10 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
exists K, merge QL K QL
Subgoal is:
mell QL LL
cut_admit_linear < witness nil.
Subgoal 1:
Variables: A B JJ J KK K QL LL
H1 : dual A B
H2 : adj JJ A J
H3 : mell QL J
H4 : adj KK B K
H5 : mell QL K
H6 : merge JJ KK LL
H7 : is_list QL
H8 : is_list J
H10 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
merge QL nil QL
Subgoal is:
mell QL LL
cut_admit_linear < backchain merge_sym.
Subgoal 1:
Variables: A B JJ J KK K QL LL
H1 : dual A B
H2 : adj JJ A J
H3 : mell QL J
H4 : adj KK B K
H5 : mell QL K
H6 : merge JJ KK LL
H7 : is_list QL
H8 : is_list J
H10 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
============================
merge nil QL QL
Subgoal is:
mell QL LL
cut_admit_linear < backchain merge_nil_equal.
Variables: A B JJ J KK K QL LL
H1 : dual A B
H2 : adj JJ A J
H3 : mell QL J
H4 : adj KK B K
H5 : mell QL K
H6 : merge JJ KK LL
H7 : is_list QL
H8 : is_list J
H10 : forall QQL JJ KK K LL, incl QL QQL -> adj JJ A J -> adj KK B K ->
mell QQL K -> merge JJ KK LL -> mell QQL LL
H11 : incl QL QL
============================
mell QL LL
cut_admit_linear < backchain H10.
Proof completed.
Abella < Theorem cut_admit_exponential :
forall A B QL QQ K, dual A B -> mell QL (A :: nil) -> adj QL B QQ ->
mell QQ K -> mell QL K.
============================
forall A B QL QQ K, dual A B -> mell QL (A :: nil) -> adj QL B QQ ->
mell QQ K -> mell QL K
cut_admit_exponential < intros.
Variables: A B QL QQ K
H1 : dual A B
H2 : mell QL (A :: nil)
H3 : adj QL B QQ
H4 : mell QQ K
============================
mell QL K
cut_admit_exponential < apply mell_is to H2.
Variables: A B QL QQ K
H1 : dual A B
H2 : mell QL (A :: nil)
H3 : adj QL B QQ
H4 : mell QQ K
H5 : is_list QL
H6 : is_list (A :: nil)
============================
mell QL K
cut_admit_exponential < apply $cut_admit to H1 H2 _ with W = heavy.
Variables: A B QL QQ K
H1 : dual A B
H2 : mell QL (A :: nil)
H3 : adj QL B QQ
H4 : mell QQ K
H5 : is_list QL
H6 : is_list (A :: nil)
H7 : heavy = light /\
(forall QQL JJ KK K LL, incl QL QQL -> adj JJ A (A :: nil) ->
adj KK B K -> mell QQL K -> merge JJ KK LL -> mell QQL LL) \/
heavy =
heavy /\
(forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL ->
adj QQL B QQ -> mell QQ K -> mell QQL K)
============================
mell QL K
cut_admit_exponential < case H7.
Variables: A B QL QQ K
H1 : dual A B
H2 : mell QL (A :: nil)
H3 : adj QL B QQ
H4 : mell QQ K
H5 : is_list QL
H6 : is_list (A :: nil)
H8 : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K
============================
mell QL K
cut_admit_exponential < assert incl QL QL.
Subgoal 1:
Variables: A B QL QQ K
H1 : dual A B
H2 : mell QL (A :: nil)
H3 : adj QL B QQ
H4 : mell QQ K
H5 : is_list QL
H6 : is_list (A :: nil)
H8 : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K
============================
incl QL QL
Subgoal is:
mell QL K
cut_admit_exponential < unfold.
Subgoal 1:
Variables: A B QL QQ K
H1 : dual A B
H2 : mell QL (A :: nil)
H3 : adj QL B QQ
H4 : mell QQ K
H5 : is_list QL
H6 : is_list (A :: nil)
H8 : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K
============================
exists K, merge QL K QL
Subgoal is:
mell QL K
cut_admit_exponential < witness nil.
Subgoal 1:
Variables: A B QL QQ K
H1 : dual A B
H2 : mell QL (A :: nil)
H3 : adj QL B QQ
H4 : mell QQ K
H5 : is_list QL
H6 : is_list (A :: nil)
H8 : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K
============================
merge QL nil QL
Subgoal is:
mell QL K
cut_admit_exponential < backchain merge_sym.
Subgoal 1:
Variables: A B QL QQ K
H1 : dual A B
H2 : mell QL (A :: nil)
H3 : adj QL B QQ
H4 : mell QQ K
H5 : is_list QL
H6 : is_list (A :: nil)
H8 : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K
============================
merge nil QL QL
Subgoal is:
mell QL K
cut_admit_exponential < backchain merge_nil_equal.
Variables: A B QL QQ K
H1 : dual A B
H2 : mell QL (A :: nil)
H3 : adj QL B QQ
H4 : mell QQ K
H5 : is_list QL
H6 : is_list (A :: nil)
H8 : forall QQL QQ K, A :: nil = A :: nil -> incl QL QQL -> adj QQL B QQ ->
mell QQ K -> mell QQL K
H9 : incl QL QL
============================
mell QL K
cut_admit_exponential < backchain H8.
Proof completed.
Abella <