Class SepAlgOps T:= {
    sa_unit : T -> Prop;
    sa_mul : T -> T -> T -> Prop
  }.Class SepAlgOps T:= {
    sa_unit : T -> Prop;
    sa_mul : T -> T -> T -> Prop
  }.Class SepAlgOps T:= {
    sa_unit : T -> Prop;
    sa_mul : T -> T -> T -> Prop
  }.Definition compat (a b : A) := exists s, sa_mul a b s.Definition subheap (a b : A) := exists c, sa_mul a c b.

(* Specifications: *)
Lemma sa_mul_monR (a b c d : A) (Habc : sa_mul a b c) (Hcd: rel c d) : sa_mul a b d.
Lemma sa_mulC2 a b c : sa_mul a b c <-> sa_mul b a c.