*)
Definition residue
{worlds: Type}
{R: Relation worlds}
{J: Join worlds}
(m n: worlds): Prop :=
exists n', join n n' m /\ m <= n'.
Class ResidualSeparationAlgebra
(worlds: Type)
{R: Relation worlds}
{J: Join worlds}: Type :=
{
residue_exists: forall n: worlds, exists m, residue n m;
}.
Class UnitalSeparationAlgebra
(worlds: Type)
{R: Relation worlds}
{J: Join worlds}: Type :=
{
incr_exists: forall n: worlds, exists m, residue n m /\ increasing m
}.
Class UnitalSeparationAlgebra'
(worlds: Type)
{R: Relation worlds}
{J: Join worlds}: Type :=
{
incr'_exists: forall n: worlds, exists m, residue n m /\ increasing' m
}.

(* Specifications: *)
(* A unital separation algebra is residual. *)
Lemma unital_is_residual
{worlds: Type}
{R: Relation worlds}
{po_R: PreOrder Krelation}
{J: Join worlds}:
UnitalSeparationAlgebra worlds ->
ResidualSeparationAlgebra worlds.
(*A increasing separation algebras is unital * iff it is residual.*)
Lemma incr_unital_iff_residual
{worlds: Type}
{R: Relation worlds}
{po_R: PreOrder Krelation}
{J: Join worlds}:
IncreasingSeparationAlgebra worlds ->
UnitalSeparationAlgebra worlds <->
ResidualSeparationAlgebra worlds.