(* * Copyright (c) 2009-2010, Andrew Appel, Robert Dockins and Aquinas Hobor. * *)
Require VST.msl.knot.
Require VST.msl.knot_full_variant.
Module Type KNOT_INPUT__COCONTRAVARIANT_HERED_T_OTH_REL.
Parameter F : functor.
Parameter other : Type.
Parameter Rel : forall A B, F A B -> F A B -> Prop.
Parameter Rel_fmap : forall A B C D (f:A->B) (s:C->D) x y,
Rel A D x y ->
Rel B C (fmap F f s x) (fmap F f s y).

(* Specifications: *)
Axiom Rel_refl : forall A B x, Rel A B x x.
Axiom Rel_trans : forall A B x y z,
Rel A B x y -> Rel A B y z -> Rel A B x z.