(*========================================================== ============================================================ TOPOLOGICAL FMAPS, HMAPS -  WITH TAGS AND EMBEDDINGS  PART 7:  expf / B0, nf_L0L0, AND CONSEQUENCES   COMPLETE: OK! ============================================================ ==========================================================*)
(* cd Desktop/JFD/JFD08/GALAPAGOS/DELAUNAY08/  coqtop -opt  Load Jordan1. Load Jordan2. Load Jordan3. Load Jordan4. Load Jordan5. Load Jordan6. *)
Require Export Jordan6.
(*========================================================= cF, expf / B...OK !! (GREAT RESULTS) VERY USEFUL FOR Jordan CT ===========================================================*)
(* expf / B *)
(* ========== 1ST PART OF CS: CASE expf m x0 xb0 =========== *)
(* OK : *)
(* OK:*)
(* SYMMETRICALLY, WE HAVE: *)
(* AND: *)
(* OK: MODIFIED BY ADDING exd m z: *)
(* THEN, COROLLARY: *)
(* THEN, BY COMBINING: *)
(* ===== 2ND PART OF CS : CASE ~expf m x0 xb0 ============== *)
(* OK: *)
(* THEN, WE SYMMETRICALLY HAVE: *)
(* OK: "HINGES" BEFORE B0 *)
(* OK: *)
(* "HINGES" AFTER B0: *)
(* OK: 4 USEFUL LEMMAS (IN FACT, 3 ARE ENOUGH) *)
(* OK: *)
(* OK: CASE ~expf m x0 xb0 *)
(* OK: *)
(* THEN, BY TRANSFERT: *)
intros.
intros.
set (x_1 := cA_1 m one x) in |- *.
set (xh0 := top m zero x) in |- *.
set (xh0_1 := cA_1 m one xh0) in |- *.
assert
((expf m x_1 z \/ expf m xh0_1 z) /\ (expf m x_1 t \/ expf m xh0_1 t) \/
expf m z t /\ ~ expf m x_1 z /\ ~ expf m xh0_1 z).
unfold x_1 in |- *; unfold xh0_1 in |- *; unfold xh0 in |- *.
apply expf_transfert.
tauto.
apply succ_exd with zero.
tauto.
tauto.
fold x0 in |- *; fold xb0 in |- *.
tauto.
fold xb0 in |- *.
fold x0 in |- *.
tauto.
apply expf_B0_CS_2_aux.
tauto.
tauto.
fold x0 in |- *.
fold xb0 in |- *.
tauto.
fold x_1 in |- *.
fold xh0 in |- *.
fold xh0_1 in |- *.
tauto.
Qed.
(* FROM WHERE, BY COMBINING: *)
(*=========================================================== THEN, CN and CNS: OK ============================================================*)
(* OK!! : *)
(* OK: *)
(* FINALLY, THE (GREAT) RESULT: *)
(*========================================================= CONSEQUENCES / B0 ===========================================================*)
(* OK: VERY USEFUL IN JORDAN CURVE THEOREM *)
(*========================================================= nf / LL : FOR L0L0: OK, COMPLETE IDEM FOR L0L1 (SET AS AXIOM) (TO COMPLETE) ==========================================================*)
(* OK, FOR nf_L0L0: *)
(* IDEM, FOR nf_L0L1 : *)
(* USEFUL LEMMA, OK!: *)
(* THEN, SYMMETRICALLY: OK, TERRIBLE !! *)
(* 6 LEMMAS FOR nf_L0L0, OK: *)
(* OK: *)
(*OK: *)
(* OK: *)
(* OK: *)
(* OK: *)
(* OK: *)
(* FINALLY, THE RESULT: OK!! *)

Theorem nf_L0L0:forall (m:fmap)(x y x' y':dart),
let m1:= L (L m zero x y) zero x' y' in
let m2:= L (L m zero x' y') zero x y in
inv_hmap m1 -> nf m1 = nf m2.