Definition BDDalloc : BDDconfig * ad :=
match new_cfg with
| (bs, (share, (fl, (cnt, (negm, orm))))) =>
match fl with
| a :: fl' =>
(MapPut _ bs a (x, (l, r)),
(MapPut3 _ share l r x a, (fl', (cnt, (negm, orm)))), a)
| nil =>
(MapPut _ bs cnt (x, (l, r)),
(MapPut3 _ share l r x cnt, (fl, (ad_S cnt, (negm, orm)))), cnt)
end
end.

Lemma BDDalloc_lemma_1 :
forall a : ad,
MapGet _ (fst (fst BDDalloc)) a =
(if Neqb a (snd BDDalloc)
then Some (x, (l, r))
else MapGet _ (fst new_cfg) a).