(*============================================================
          PUIS LA 1ERE PARTIE DE expf_L1_CNS...
=============================================================*)

(*
RECALL:

Lemma expf_L1_CNS:forall (m:fmap)(x y z t:dart),
  inv_hmap (L m one x y) -> exd m z ->
  (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
      if expf_dec m x y0 
      then 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 
      else   expf m z t
          \/ expf m z x /\ expf m t y0
          \/ expf m t x /\ expf m z y0).
*)


(* ESSAIS:

Definition dec (A:Prop):Set:= {A}+{~A}.

Lemma or_and_dec : forall (A B C D:Prop),
  dec A -> dec B -> dec C -> dec D ->
   {A /\ B \/ C /\ D}
 + {~(A /\ B \/ C /\ D)}.
Proof. unfold dec in |- *.
intros.
 tauto.
Qed.

*)


(* AUXILARIES: *)

Definition dec (A:Prop):Set:= {A}+{~A}.

Lemma degree_L1_split_y_1_aux: forall(m:fmap)(x y:dart)(j i:nat), let m1:= L m one x y in let y0 := cA m zero y in let y_1:= cA_1 m one y in let dx:= MF.degree m x in y0 = Iter (cF m) j x -> j + 1 + i < dx -> expf m x y0 -> inv_hmap m1 -> MF.degree_aux m1 y_1 (dx - (j + 1 + i)) = dx - (j + 1).