Section FinitePartialMap.
Variable A:Type.
Variable dec_A : EqDec A.
Variable B:Type.
Variable PJ_B: Join B.
Variable Perm_B : Perm_alg B.
Variable Pos_B : Pos_alg B.
Let Rng := option B.
Let Join_Rng := Join_lower PJ_B.
Let Sep_Rng := Sep_lower B.
Let Perm_Rng := Perm_lower B.
Definition finMap (f:A -> Rng) : Prop :=
exists l, forall a:A, ~In a l -> f a = None.
Definition fpm := sig finMap.
Instance Join_fpm : Join fpm :=
Join_prop (A -> option B)  (Join_fun A (option B) Join_Rng) finMap.
Definition PAF: (@Perm_alg (A -> Rng)  (Join_fun A Rng Join_Rng))
:= Perm_fun _ _ _ Perm_Rng.
Instance Perm_fpm : @Perm_alg fpm Join_fpm :=
Perm_prop (A -> Rng) _ _ finMap finMap_join.

Lemma finMap_core  x: finMap x ->
finMap (@core _ _ (Sep_fun A (option B) Join_Rng _ ) x).