Section optionSA.
Context (worlds: Type).
Inductive option_join {J: Join worlds}: option worlds -> option worlds -> option worlds -> Prop :=
| None_None_join: option_join None None None
| None_Some_join: forall a, option_join None (Some a) (Some a)
| Some_None_join: forall a, option_join (Some a) None (Some a)
| Some_Some_join: forall a b c, join a b c -> option_join (Some a) (Some b) (Some c).
Definition option_Join {SA: Join worlds}: Join (option worlds):=
(@option_join SA).
Definition option_SA
{J: Join worlds}
{SA: SeparationAlgebra worlds}:
@SeparationAlgebra (option worlds) (option_Join).

(* Downwards closed IF the algebra is increasing*)
Lemma option_ord_dSA
{R: Relation worlds}
{po_R: PreOrder Krelation}
{J: Join worlds}
{SA: SeparationAlgebra worlds}
(dSA: DownwardsClosedSeparationAlgebra worlds)
{incrSA: IncreasingSeparationAlgebra worlds}:
@DownwardsClosedSeparationAlgebra (option worlds) (option01_relation Krelation) option_Join.