(*======================================================== PATHS IN FACES OF QHMAPS ========================================================*)
(* Existence of a REFLEXIVE path from a dart to another in a direct hmap face: *)
Fixpoint expf(m:fmap)(x y:dart){struct m}:Prop:=
match m with
V => False
|  I m0 x0 => expf m0 x y \/ x=x0 /\ y=x0
|  L m0 di0 x0 y0 =>
expf m0 x y
\/ let x_1 := A_1 m0 di1 x0 in
x_1<>nil /\ expf m0 x y0 /\ expf m0 x_1 y
|  L m0 di1 x0 y0 =>
expf m0 x y
\/ let y1 := A m0 di0 y0 in
y1<>nil /\ expf m0 x y1 /\ expf m0 x0 y
end.
(* Decidability of expf: OK *)

(* Specifications: *)
Lemma expf_dec : forall (m:fmap)(x y:dart),
{expf m x y} + {~expf m x y}.