(*========================================================
             FACE OPERATIONS IN QHMAPS
========================================================*)

(* The following operations are designed for qhmaps,
but are defined on fmap for convenience *)

(* Successor F in a face - direct version, 
designed for qhmaps: *)

Definition F(m:fmap)(x:dart):=
  A_1 m di1 (A_1 m di0 x).(* To have a successor in a (direct) face for x: *)

Definition succf(m:fmap)(x:dart):Prop:=
  pred m di0 x /\ pred m di1 (A_1 m di0 x).

(* Specifications: *)
Lemma succf_dec : forall (m:fmap)(x:dart), {succf m x}+{~succf m x}.
Lemma succf_exd : forall (m:fmap)(x:dart), inv_qhmap m -> succf m x -> exd m x.