Remark get_leaf:
forall (n: positive), get Leaf n = None.
Proof get_empty.

(* Specifications: *)
Lemma get_set_other:
forall (n1 n2: positive) (m: map) (x: A),
n1 <> n2 -> get (set m n1 x) n2 = get m n2.
Lemma get_set:
forall (m: map) (n1 n2: positive) (x: A),
get (set m n1 x) n2 =
if peq n1 n2 then Some x else get m n2.
Lemma unset_same : forall m v,
get (unset m v) v = None.
Lemma get_set_other:
forall (n1 n2: positive) (m: map) (x: A),
n1 <> n2 -> get (set m n1 x) n2 = get m n2.
Lemma get_set:
forall (m: map) (n1 n2: positive) (x: A),
get (set m n1 x) n2 =
if peq n1 n2 then Some x else get m n2.
Lemma unset_same : forall m v,
get (unset m v) v = None.
Lemma get_set_other:
forall (n1 n2: positive) (m: map) (x: A),
n1 <> n2 -> get (set m n1 x) n2 = get m n2.
Lemma get_set:
forall (m: map) (n1 n2: positive) (x: A),
get (set m n1 x) n2 =
if peq n1 n2 then Some x else get m n2.
Lemma unset_same : forall m v,
get (unset m v) v = None.