Definition fset_fix := [fsetval x in set_fix Fsub].

(* Specifications: *)
Lemma fset_iterFE i : iterF i = [fsetval x in iter i Fsub set0].
Lemma fset_iterF_sub i : iterF i `<=` U.
Hint Resolve fset_fixK.
Lemma fset_fixKn k : iter k F fset_fix = fset_fix.
Definition ffix_order (x : T) :=
if x \in U =P true is ReflectT xU then fix_order Fsub [` xU] else 0.
Lemma ffix_order_le_max (x : T) : ffix_order x <= #|` U|.
Lemma in_iter_ffix_orderE (x : T) :
(x \in iterF (ffix_order x)) = (x \in fset_fix).
Lemma ffix_order_gt0 (x : T) : (ffix_order x > 0) = (x \in fset_fix).
Lemma ffix_order_eq0 (x : T) : (ffix_order x == 0) = (x \notin fset_fix).
Lemma in_iter_ffix (x : T) k : x \in fset_fix -> ffix_order x <= k ->
x \in iterF k.
Lemma fndSome V (f : {fmap K -> V}) (k : K) :
f.[? k] = (k \in f) :> bool.
Lemma fmapP V (f g : {fmap K -> V}) :
(forall k, f.[? k] = g.[? k]) <-> f = g.
Lemma fnd_fmap0 V k : ([fmap] : {fmap K -> V}).[? k] = None.
Lemma fnd_set V (f : {fmap K -> V}) k0 v0 k :
f.[k0 <- v0].[? k] = if k == k0 then Some v0 else f.[? k].
Lemma fmap_nil V (f : {fmap K -> V}) : domf f = fset0 -> f = [fmap].
Lemma getf_set V (f : {fmap K -> V}) (k : K) (v : V) (kf' : k \in _) :
f.[k <- v].[kf'] = v.