internal override Automaton <BDD> getAutomatonBDD(SimpleList <Variable> variables, IBDDAlgebra alg, int nrOfLabelBits) { var aut = phi.getAutomatonBDD(variables, alg, nrOfLabelBits); var res = aut.Determinize(alg).Complement(alg).Minimize(alg); foreach (var x in phi.EnumerateFreeVariablesPossiblyWithDuplicates()) { if (x.IsFirstOrder) { var sing = new WS1SSingleton <T>(x).getAutomatonBDD(variables, alg, nrOfLabelBits); res = res.Intersect(sing, alg).Determinize(alg).Minimize(alg); } } return(res); }
internal override IEnumerable <Variable> EnumerateFreeVariablesPossiblyWithDuplicates() { foreach (var v in phi.EnumerateFreeVariablesPossiblyWithDuplicates()) { if (!var.Equals(v)) { yield return(v); } } }
internal override IEnumerable <Variable> EnumerateFreeVariablesPossiblyWithDuplicates() { foreach (var v in phi1.EnumerateFreeVariablesPossiblyWithDuplicates()) { yield return(v); } foreach (var v in phi2.EnumerateFreeVariablesPossiblyWithDuplicates()) { yield return(v); } }