(* THEN, THE RESULT: *)

(* Specifications: *)
Theorem expo_eq_eqs_orb:forall(m:fmap)(x y:dart),
inv_hmap m -> exd m x -> exd m y ->
(expo m x y <-> eqs (Iter_orb m x) (Iter_orb m y)).
Theorem not_expo_disjs_orb:forall(m:fmap)(x y:dart),
inv_hmap m -> exd m x -> exd m y ->
(~expo m x y <->
disjs (Iter_orb m x) (Iter_orb m y)).
Lemma incls_minus: forall(m:fmap)(x y:dart),
inv_hmap m -> exd m x -> exd m y ->
~expo m x y ->
let s:= fmap_to_set m in
let sx:= Iter_orb m x in
let sy:= Iter_orb m y in
incls sy (set_minus s sx).
Theorem expf_L1_eq:forall(m:fmap)(x y z t:dart),
let m1:= L m one x y in
let y0:= cA m zero y in
inv_hmap m1 -> ~expf m x y0
-> ~expf m x z -> ~expf m y0 z ->
(expf m1 z t <-> expf m z t).
Theorem degree_L1_split: forall(m:fmap)(x y:dart),
let m1:= L m one x y in
let y0 := cA m zero y in
let y_1:= cA_1 m one y in
inv_hmap (L m one x y) ->
expf m x y0 ->
MF.degree m x = MF.degree m1 x + MF.degree m1 y_1.
Lemma expf_L1_II_CN:forall (m:fmap)(x y z t:dart),
inv_hmap (L m one x y) -> exd m z ->
let x1 := cA m one x in
let x10 := cA m zero x1 in
let y0 := cA m zero y in
let y_1 := cA_1 m one y in
expf m x y0 ->
expf (L m one x y) z t ->
( betweenf m x z y0 /\ betweenf m x t y0
\/ betweenf m y_1 z x10 /\ betweenf m y_1 t x10
\/ ~ expf m x z /\ expf m z t ).