proposition: Lemma BDDbounded_lemma : forall (bs : BDDstate) (node : ad) (n : BDDvar), BDDbounded bs node n -> node = BDDzero \/ node = BDDone \/ (exists x : BDDvar, (exists l : BDDvar, (exists r : BDDvar, MapGet _ bs node = Some (x, (l, r)) /\ BDDcompare x n = Datatypes.Lt /\ N.eqb l r = false /\ BDDbounded bs l x /\ BDDbounded bs r x))).
proof: Proof. intro bs. intro node. intro n. intro H. elim H. intros n0. left. trivial. intros n0. right. left. trivial. intros node0 n0 x l r H0 H1 H2 H3 H4 H5 H6. right. right. split with x. split with l. split with r. split. assumption. split. assumption. split. assumption. split. assumption. assumption. Qed.
imports: Bool Sumbool Arith ZArith NArith Nnat Ndec Ndigits IntMap(Allmaps) Wf_nat BDDvar_ad_nat