Definition ltF : list Tree -> list Tree -> Prop := fun f' => fun f => exists w, exists a,
is_insert_forest f w a f'  /\ (forall t, tree_in_forest t f' -> bad_seq_in_lbl t) /\ f<>f'.Fact acc_ltF_nil : Acc ltF nil.Fact acc_ltF_cons : forall f t, Acc ltF f -> Acc ltF (t::nil) -> Acc ltF (t::f).

(* Specifications: *)
Lemma is_forest_roots_labels : forall ws f, is_forest ws f -> roots_labels f = Some (bad_subsequence leA leA_dec (firsts ws)).
Lemma acc_ltF_single : forall ws, Acc (continues embeds) ws -> forall l a bs, Acc (continues leA) bs -> forall ts, Acc ltF ts -> forall t, root t = (ws,a::l) /\ subtrees t = ts /\ Some bs = roots_labels ts -> Acc ltF (t::nil).
Lemma higman_aux : forall bs, Acc (continues leA) bs -> forall f, Acc ltF f -> forall ws, bs = bad_subsequence leA leA_dec (firsts ws) /\ is_forest ws f -> bad embeds ws -> Acc (continues embeds) ws.
Theorem Higman : Acc (continues leA) nil -> Acc (continues embeds) nil.