(* THEN, IN SUMMARY: NON-NECESSARY  Lemma expf_L1_II_CNS:forall (m:fmap)(x y z t:dart), inv_hmap (L m one x y) -> exd m z -> expf_dec m x y0 -> (expf (L m one x y) z t <-> 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 z t \/ expf m z x /\ expf m t y0 \/ expf m t x /\ expf m z y0 ).  *)
(*========================================================== 2. SPLITTING A FACE BY L1 (Case expf m x y0) ===========================================================*)
(* A FEW USEFUL LEMMAS: *)
Open Scope nat_scope.

(* Specifications: *)
Lemma cF_L1_x_y0:forall(m:fmap)(x y:dart)(i j:nat),
inv_hmap m -> prec_L m one x y ->
let y0 := cA m zero y in
let dx := MF.degree m x in
let m1:= L m one x y in
y0 = Iter (cF m) j x -> expf m x y0 ->
(i <= j < dx - 1) ->
Iter (cF m1) i x = Iter (cF m) i x.
Lemma diff_cF_L1_x_y0:forall(m:fmap)(x y:dart)(i j:nat),
inv_hmap m -> prec_L m one x y ->
let y0 := cA m zero y in
let dx := MF.degree m x in
let m1:= L m one x y in
y0 = Iter (cF m) j x -> expf m x y0 ->
(0 < i <= j /\ j < dx - 1) ->
Iter (cF m1) i x <> x.
Lemma cF_L1_y0_x:forall(m:fmap)(x y:dart)(j:nat),
inv_hmap m -> prec_L m one x y ->
let y0 := cA m zero y in
let y_1:= cA_1 m one y in
let x1:= cA m one x in
let x10:= cA m zero x1 in
let dx := MF.degree m x in
let m1:= L m one x y in
j < dx - 1 ->
y0 = Iter (cF m) j x -> expf m x y0 ->
Iter (cF m1) (j + 1) x = x.
Lemma cF_L1_y_1_x10:forall(m:fmap)(x y:dart)(i j:nat),
inv_hmap m -> prec_L m one x y ->
let y0 := cA m zero y in
let y_1:= cA_1 m one y in
let x1:= cA m one x in
let x10:= cA m zero x1 in
let dx := MF.degree m x in
let m1:= L m one x y in
y0 = Iter (cF m) j x -> expf m x y0 ->
j < dx - 1 ->
j + 1 + i <= dx - 1 ->
Iter (cF m1) i y_1 = Iter (cF m) (j + 1 + i) x.