コード例 #1
0
        private static bool DecisionsAreConsistent(Alethicity aAlethicity, Prover9Mace4.Result aResult)
        {
            if (aResult == Prover9Mace4.Result.NoDecision)
            {
                return(true);
            }

            if (aAlethicity == Alethicity.Necessary &&
                aResult != Prover9Mace4.Result.Necessary &&
                aResult != Prover9Mace4.Result.Possible)
            {
                return(false);
            }

            if (aAlethicity == Alethicity.Impossible &&
                aResult != Prover9Mace4.Result.Impossible &&
                aResult != Prover9Mace4.Result.Unnecessary)
            {
                return(false);
            }

            if (aAlethicity == Alethicity.Contingent &&
                (aResult == Prover9Mace4.Result.Necessary || aResult == Prover9Mace4.Result.Impossible))
            {
                return(false);
            }

            return(true);
        }
コード例 #2
0
        public static Alethicity GetDecision(string aText)
        {
            Matrix     lProposition = Parser.Parse(aText.Split('\n'));
            Alethicity lDecision    = lProposition.Decide();

            Prover9Mace4.Result lProver9sDecision = Prover9Mace4.Decide(lProposition, Prover9Mace4Timeout);
            Console.WriteLine("Prover9/Mace4 decided {0}.", lProver9sDecision);
            Assert.IsTrue(
                DecisionsAreConsistent(lDecision, lProver9sDecision),
                string.Format("Inconsistent decisions: {0}, {1}", lDecision, lProver9sDecision));
            return(Parser.Parse(aText.Split('\n')).Decide());
        }