Definition node_OK (bs : BDDstate) (node : ad) :=
node = BDDzero \/ node = BDDone \/ in_dom _ node bs = true.

Lemma BDDalloc_keeps_state_OK :
forall (cfg : BDDconfig) (l r : ad) (x : BDDvar),
BDDconfig_OK cfg ->
node_OK (fst cfg) l ->
node_OK (fst cfg) r ->
Neqb l r <> true ->
(forall (xl : BDDvar) (ll rl : ad),
MapGet _ (fst cfg) l = Some (xl, (ll, rl)) ->
BDDcompare xl x = Datatypes.Lt) ->
(forall (xr : BDDvar) (lr rr : ad),
MapGet _ (fst cfg) r = Some (xr, (lr, rr)) ->
BDDcompare xr x = Datatypes.Lt) ->
BDDstate_OK (fst (fst (BDDalloc cfg x l r))).