Module KnotInput <: KNOT_INPUT__HERED_PROP_OTH_REL.
Definition F := program.
Definition fmap A B (f:A->B) := map_fmap _ _ (fmap_instr f).
Implicit Arguments fmap [A B].
Definition Rel A (x y:F A) : Prop := x = y.
Definition Rel_unfmap : forall A B (f:A->B) x y,
Rel B (fmap f x) y ->
exists y', Rel A x y' /\ fmap f y' = y.

Lemma Rel_trans : forall A x y z,
Rel A x y -> Rel A y z -> Rel A x z.