(*========================================================== ============================================================ TOPOLOGICAL FMAPS, HMAPS -  WITH TAGS AND EMBEDDINGS  PART 5:  characteristics, eqc, expf / L0, L_B  COMPLETE FOR DIM 0 (DIM 1 IN THE NEXT FILE): OK! ============================================================ ==========================================================*)
Require Export Jordan4.
(* OK: *)
(* OK: *)
(* LEMMA, USEFUL: *)
(*=========================================================== cF, expf on L and B ============================================================*)
(* OK, TRIVIAL: USEFUL? *)
(*========================================================= cF / L, expf / L, CNS ===========================================================*)
(* expf IS AN EQUIVALENCE (NEW PLACE): *)
(* OK!: *)
(* OK: *)
(* OK: *)
(* OK: *)
(* RENAMING of MF.between: *)
Definition betweenf:= MF.between.
(* IDEM: USED IN between_expf_L0_2:*)
(* OK!: *)
(* SYMMETRICALLY, USEFUL: *)
(* THEN, OK: *)
(* SYMMETRIC, OK: *)
(* OK: BUT REPLACE  betweenf m x_1 z x0 BY expf m x_1 z, WHICH IS EQUIVALENT: *)
(* WITH THE REPLACEMENT, OK: *)
(* IDEM (TO PROVE), SYMMETRIC: BUT REPLACE betweenf m y_0_1 z y BY expf m y z which is EQUIVALENT *)
(* NEW FORMULATION!! *)
(* NEW FORMULATION!! *)
(* ANCIENT FORMULATION : DIRECT FROM expf_expf_L0_4_bis_prel... *)
(* FROM WHERE: *)
(* SYMMETRICALLY, OK: *)
(* OK: *)
(* COROLLARY: *)
(* OK, WITH expf_expf_L0_2_bis: *)
(* OK!: *)
(* CN_1: BY INDUCTION ON i: OK!, TEDIOUS *)
(* OK: INDUCTION ON i!*)
(* CN, GOOD VERSION: OK *)
(* FROM WHERE, THE NECESSARY AND SUFFICIENT CONDITION: *)

Theorem expf_L0_CNS:forall (m:fmap)(x y z t:dart),
inv_hmap (L m zero x y) -> exd m z ->
(expf (L m zero x y) z t <->
let x0 := cA m zero x in
let x_1 := cA_1 m one x in
let y_0:= cA_1 m zero y in
let y_0_1 := cA_1 m one y_0 in
(if expf_dec m x_1 y
then betweenf m x_1 z y /\ betweenf m x_1 t y
\/ betweenf m y_0_1 z x0 /\ betweenf m y_0_1 t x0
\/ ~ expf m x_1 z /\ expf m z t
else   expf m z t
\/ expf m z y /\ expf m t x0
\/ expf m t y /\ expf m z x0)).