Definition empty_fpm : fpm.Instance Sep_fpm : @Sep_alg fpm Join_fpm.Instance Sing_fpm:  @Sing_alg fpm _ _.Instance Canc_fpm {CA_B: Canc_alg B}: Canc_alg fpm.Instance Disj_fpm {DA_B: Disj_alg B}: Disj_alg fpm.Definition lookup_fpm (f:fpm) : A -> Rng := proj1_sig f.Definition insert_fpm (a:A) (b: B) (f:fpm) : fpm.Definition insert'_fpm (a:A)(b: option B) (f: fpm) : fpm.Definition remove_fpm (a:A) (f:fpm) : fpm.

Lemma insert_fpm_join : forall i v (x y z:fpm), lookup_fpm y i = None -> @join _ Join_fpm x y z -> @join _ Join_fpm (insert_fpm i v x) y (insert_fpm i v z).