End optionSA.
Section exponentialSA.
Definition fun_Join (A B: Type) {J_B: Join B}: Join (A -> B) :=
(fun a b c => forall x, join (a x) (b x) (c x)).
Definition fun_SA
(A B: Type)
{Join_B: Join B}
{SA_B: SeparationAlgebra B}: @SeparationAlgebra (A -> B) (fun_Join A B).

(* Exponential is upwards closed *)
Lemma fun_uSA
(A B: Type)
{R_B: Relation B}
{J_B: Join B}
(uSA_B: UpwardsClosedSeparationAlgebra B):
@UpwardsClosedSeparationAlgebra (A -> B) (pointwise_relation A R_B) (fun_Join A B).