Example #1
0
 /// <summary>Convert to NNF proposition</summary>
 /// <exception cref="InvaildPropositionException"></exception>
 /// <returns>NNF proposition</returns>
 public static Proposition ToNNF(this Proposition expr)
 {
     if (expr.IsNNF())
     {
         return(expr);
     }
     return(logEngine.ConvertToNNF(expr));
 }
Example #2
0
        public void RunMain()
        {
            Proposition expr;
            string      result;

            //string s = "( p -> ( q & r ) ) <-> y";
            //string s = "(A ->( B -> C )) <-> ( C -> D ) & ( D -> E) ";
            //string s = "p<->p";
            //string s = "p <-> a & b";
            //string s = "((p | q) & (~p | r)) -> (q | r)";
            //string s = "(P|(S&T))|R";
            //string s = "(A&B)|(~A)|(~B)";
            //string s = "(~p)<->(p->F)";
            //string s = "(~((a&b)|c)&d)|(((a&b)|c)&(~d))";
            string      s           = "(a&b)|(c&d)|(e&f)";
            ParseEngine parseEngine = new ParseEngine();

            parseEngine.TryParse(out expr, out result, s);

            LogicEngine logicEng = new LogicEngine();
            Proposition nnfExpr  = logicEng.ConvertToNNF(expr);

            Proposition cnfExpr = logicEng.ConvertToCNF(nnfExpr);
            bool        b       = logicEng.IsTautology(cnfExpr);

            WriteFile(cnfExpr.ToString());
        }