Definition BDDconfig := (BDDstate * (BDDsharing_map * ad))%type.Definition initBDDconfig :=
    (initBDDstate, (initBDDsharing_map, ad_S (ad_S N0))).Definition BDDconfig_OK (cfg : BDDconfig) :=
    match cfg return Prop with
    | (bs, (share, counter)) =>
        BDDstate_OK bs /\
        BDDsharing_OK bs share /\
        (forall a : ad, Nleb counter a = true -> MapGet _ bs a = None) /\
        Nleb (ad_S (ad_S N0)) counter = true
    end.

(* Specifications: *)
Lemma initBDDconfig_OK : BDDconfig_OK initBDDconfig.
Lemma config_OK_zero : forall cfg : BDDconfig, BDDconfig_OK cfg -> MapGet _ (fst cfg) BDDzero = None.
Lemma config_OK_one : forall cfg : BDDconfig, BDDconfig_OK cfg -> MapGet _ (fst cfg) BDDone = None.