(* Connectivity : Definition in Prop "a la" Warshall *)

Fixpoint eqc(m:fmap)(x y:dart){struct m}:Prop:=
 match m with
     V => False
  |  I m0 x0 => x=x0 /\ y=x0 \/ eqc m0 x y
  |  L m0 _ x0 y0 =>
      eqc m0 x y
     \/ eqc m0 x x0 /\ eqc m0 y0 y
     \/ eqc m0 x y0 /\ eqc m0 x0 y
 end.

(* Specifications: *)
Lemma eqc_dec : forall (m:fmap)(x y:dart), {eqc m x y} + {~eqc m x y}.
Lemma refl_eqc: forall(m:fmap)(x:dart), exd m x -> eqc m x x.
Lemma symm_eqc: forall(m:fmap)(x y:dart), eqc m x y -> eqc m y x.
Lemma trans_eqc: forall(m:fmap)(x y z:dart), eqc m x y -> eqc m y z -> eqc m x z.
Lemma succ_eqc_A_r : forall m:fmap, inv_qhmap m -> forall (k:dim)(x:dart), succ m k x -> eqc m x (A m k x).
Lemma pred_eqc_A_1_r : forall m:fmap, inv_qhmap m -> forall (k:dim)(x:dart), pred m k x -> eqc m x (A_1 m k x).
Lemma eqc_eqc_A_1_l : forall m:fmap, inv_qhmap m -> forall (k:dim)(x y:dart), eqc m x y -> pred m k x -> eqc m (A_1 m k x) y.
Lemma eqc_A_1_l_eqc : forall m:fmap, inv_qhmap m -> forall (k:dim)(x y:dart), pred m k x -> eqc m (A_1 m k x) y -> eqc m x y.
Lemma eqc_A_r_eqc : forall m:fmap, inv_qhmap m -> forall (k:dim)(x y:dart), succ m k y -> eqc m x (A m k y) -> eqc m x y.
Lemma expf_eqc : forall m:fmap, inv_qhmap m -> forall (x y:dart), expf m x y -> eqc m x y.
Lemma expf_A_1_l_eqc : forall m:fmap, inv_qhmap m -> forall (x y:dart)(k:dim), expf m (A_1 m k x) y -> eqc m x y.
Lemma expf_A_r_eqc : forall(m:fmap)(k:dim), inv_qhmap m -> forall (x y:dart), expf m x (A m k y) -> eqc m x y.