(* OK!! *)

(* Specifications: *)
Lemma bottom_L_B_top_bot:
forall(m:fmap)(x z:dart)(H:inv_hmap m),
succ m zero x -> exd m z -> x <> z ->
let m0:= L (B m zero x)
zero (top m zero x) (bottom m zero x) in
bottom m0 zero z =
if MA0.expo_dec m x z H then (A m zero x)
else bottom m zero z.
Lemma eqc_L_B_top_bot:forall (m:fmap)(k:dim)(x z t:dart),
inv_hmap m -> succ m k x ->
let m0:= L (B m k x) k (top m k x) (bottom m k x) in
eqc m0 z t <-> eqc m z t.
Lemma MA0_f_cA0:forall(m:fmap)(z:dart),
MA0.f m z = cA m zero z.
Lemma expe_L_B_top_bot:forall (m:fmap)(x z t:dart),
inv_hmap m -> succ m zero x ->
let m0:= L (B m zero x) zero (top m zero x) (bottom m zero x)
in expe m0 z t <-> expe m z t.
Theorem upb_eq_degree:forall(m:fmap)(z:dart),
inv_hmap m -> exd m z ->
Iter_upb m z = degree m z.
Lemma expf_L1_I_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 ->
( expf m z t
\/ expf m z x /\ expf m t y0
\/ expf m t x /\ expf m z y0 ).
Lemma cA_L_B:forall (m:fmap)(k j:dim)(x z:dart),
inv_hmap m -> succ m k x ->
let y:= A m k x in
cA (L (B m k x) k x y) j z = cA m j z.