Beispiel #1
0
        internal override Automaton <IMonadicPredicate <BDD, T> > getAutomaton(SimpleList <Variable> variables, ICartesianAlgebraBDD <T> alg)
        {
            var aut = phi.getAutomaton(variables, alg);
            var res = aut.Determinize(alg).Complement(alg).Minimize(alg);

            foreach (var x in phi.GetFreeVariables(true))
            {
                var sing = new WS1SSingleton <T>(x).getAutomaton(variables, alg);
                res = res.Intersect(sing, alg).Determinize(alg).Minimize(alg);
            }
            return(res);
        }
Beispiel #2
0
        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);
        }