(* Require Export compcert.lib.Coqlib. *)
From mathcomp.ssreflect Require Import ssreflect ssrbool ssrnat ssrfun eqtype seq fintype finfun.
Set Implicit Arguments.
Set Bullet Behavior "Strict Subproofs".
Definition map_leq {A B} (m1: PTree.t A)(m2: PTree.t B): Prop :=
forall p, m1 ! p -> m2 ! p.

(* Specifications: *)
Lemma map_leq_apply:
forall {A B} (m1: PTree.t A)(m2: PTree.t B) p f1,
map_leq m1 m2 ->
m1 ! p = Some f1 -> exists f2, m2 ! p = Some f2.
Lemma treemap_sub_map: forall {A B} (f: positive -> B -> A) m2,
map_leq (PTree.map f m2) m2.
Lemma map_leq_apply:
forall {A B} (m1: PTree.t A)(m2: PTree.t B) p f1,
map_leq m1 m2 ->
m1 ! p = Some f1 -> exists f2, m2 ! p = Some f2.
Lemma treemap_sub_map: forall {A B} (f: positive -> B -> A) m2,
map_leq (PTree.map f m2) m2.