Definition resource_fmap (f g:pred rmap -> pred rmap) (x:resource) : resource :=
match x with
| NO sh nsh => NO sh nsh
| YES sh rsh k p => YES sh rsh k (preds_fmap f g p)
| PURE k p => PURE k (preds_fmap f g p)
end.

(* Specifications: *)
Axiom resource_fmap_id : resource_fmap (id _) (id _) = id resource.
Axiom resource_fmap_comp : forall f1 f2 g1 g2,
resource_fmap g1 g2 oo resource_fmap f1 f2 = resource_fmap (g1 oo f1) (f2 oo g2).