Fixpoint canonicalPTree (l : list (positive * (Z -> perm_kind -> option permission))) :=
match l with
| nil => PTree.empty _
| x :: l =>
PTree.set (fst x) (snd x) (canonicalPTree l)
end.

Lemma canonicalPTree_get_complete :
forall l m k f fn
(HGet: (canonicalPTree (PList fn l m)) ! k = Some f),
List.In (k, f) (PList fn l m).