public Bdd execute() { Bdd b = body.execute(); Bdd result = new Bdd(false); foreach (Var v in vars) { //Bdd b2 = v.execute(); //result = BDD.And(BDD.Restrict(b.Var, b2.Var, true), BDD.Restrict(b.Var, b2.Var, false)); result = BDD.Or(result, BDD.ForAll(v.execute().Var, b)); } b.Dispose(); return(result); }