Load loadpath.
VST.msl.sepalg_functors VST.msl.sepalg_generators.
Module BarebonesStates.
Definition loc := nat.
Definition val := option nat.
Definition var := Ident.t.
Definition env := var -> val.
Definition heap := loc -> val.
End BarebonesStates.
Module BarebonesLogic <: VERISTAR_LOGIC.
Definition loc := loc.
Instance Join_loc : Join loc := @Join_equiv _.
Instance Perm_loc : Perm_alg loc := _.
Instance Sep_loc : Sep_alg loc := _.
Instance Canc_loc : Canc_alg loc := _.
Instance Join_nat : Join nat := @Join_discrete _.
Instance Pos_nat : @Pos_alg nat (@Join_discrete _) := @psa_discrete _.
Instance Canc_nat : @Canc_alg nat Join_nat.
unfold Canc_alg; intros ? ? ? ? H; inv H.
Qed.
Definition val := val.
Instance Join_val : Join val := Join_lower Join_nat.
Instance Perm_val : Perm_alg val := _.
Instance Sep_val : Sep_alg val := _.
Instance Canc_val : Canc_alg val := @Canc_lower _ _ _ Canc_nat.

(* Specifications: *)
Lemma identity_None: @identity _ Join_val None.
repeat intro. inv H; auto. Qed.