End SepAlgCompat.
Module SepAlgNotations.
Notation "a '-' b" := (sa_mul a b) (at level 50, left associativity) : sa_scope.
Notation "a '-' b |-> c" := (sa_mul a b c) (at level 52, no associativity) : sa_scope.
Notation "^" := sa_unit : sa_scope.
Notation "a # b" := (compat a b) (at level 70, no associativity) : sa_scope.
Notation "a <= b" := (subheap a b) (at level 70, no associativity) : sa_scope.
End SepAlgNotations.
Delimit Scope sa_scope with sa.
Instance subheap_preo A `{sa : SepAlg A} : PreOrder (@subheap A SAOps).
Instance compat_symm A `{sa : SepAlg A} : Symmetric (compat (A := A)).
Existing Instance sa_unit_proper.

(* Specifications: *)
(* From MSL: Two units are equal if they are units of two elements related by the extension order. *)
Lemma join_sub_units_eq A `{SepAlg A} (a b ea eb a': A):
sa_mul a a' b ->
sa_mul a ea a -> sa_unit ea ->
sa_mul b eb b -> sa_unit eb ->
rel ea eb.