Beispiel #1
0
        public void TermReductionTest_InputCombinatorS_ReturnsSameStringificationResult()
        {
            var term1           = CombinatorS.ConstructCombinator();
            var sTerm           = Term.BuildWith(new Term[] { term1 });
            var expected        = sTerm.Stringify();
            var reductionResult = Term.EvaluateWith(new Term[] { term1 });
            var result          = reductionResult.Stringify();

            Assert.AreEqual(expected, result);
        }
        private static void EvaluateAndPrintSxyz()
        {
            var S = CombinatorS.ConstructCombinator();
            var x = new Variable("x");
            var y = new Variable("y");
            var z = new Variable("z");

            Console.WriteLine($"Evaluating term {S} {x} {y} {z}");
            Term.EvaluateWith(new Term[] { S, x, y, z }).Dump();
            Whitespace();
        }
        private static void EvaluateAndPrintSKKx()
        {
            var S  = CombinatorS.ConstructCombinator();
            var Ka = CombinatorK.ConstructCombinator();
            var Kb = CombinatorK.ConstructCombinator();
            var x  = new Constant("x");

            Console.WriteLine($"Evaluating term {S} {Ka} {Kb} {x}");
            Term.EvaluateWith(new Term[] { S, Ka, Kb, x }).Dump();
            Whitespace();
        }
        public void TermReductionTest_InputSKIX_ReturnsTermX()
        {
            var S            = CombinatorS.ConstructCombinator();
            var K            = CombinatorK.ConstructCombinator();
            var I            = CombinatorI.ConstructCombinator();
            var x            = new Variable("x");
            var expectedTerm = Term.BuildWith(new Term[] { x });
            var resultTerm   = Term.EvaluateWith(new Term[] { S, K, I, x });

            Assert.AreEqual(expectedTerm.Stringify(), resultTerm.Stringify());
        }
Beispiel #5
0
        public void TermReductionTest_InputCombinatorSWith3Constants_ReturnsEvaluatedStringificationResult()
        {
            var    Scomb           = CombinatorS.ConstructCombinator();
            var    termX           = new Constant("x");
            var    termY           = new Constant("y");
            var    termZ           = new Constant("z");
            var    termZcopy       = new Constant("z");
            var    superterm1      = new Term(termX, termZ);
            var    superterm2      = new Term(termY, termZcopy);
            var    expectedResult  = Term.BuildWith(new Term[] { termX, termZ, superterm2 });
            string expected        = expectedResult.Stringify();
            var    reductionResult = Term.EvaluateWith(new Term[] { Scomb, termX, termY, termZ });
            var    result          = reductionResult.Stringify();

            Assert.AreEqual(expected, result);
        }
Beispiel #6
0
        public void TermReductionTest_InputCombinatorSWith3ConstantsAndTuple_ReturnsEvaluatedStringificationResult()
        {
            var    term1           = CombinatorS.ConstructCombinator();
            var    term2           = new Constant("x");
            var    term2copy       = new Constant("x");
            var    term3           = new Constant("y");
            var    term4           = new Constant("z");
            var    term4a          = new Constant("z");
            var    subterm         = new Term(term2, term2copy);
            var    superterm2      = new Term(term3, term4a);
            var    expectedResult  = Term.BuildWith(new Term[] { subterm, term4, superterm2 });
            string expected        = expectedResult.Stringify();
            var    reductionResult = Term.EvaluateWith(new Term[] { term1, subterm, term3, term4 });
            var    result          = reductionResult.Stringify();

            Assert.AreEqual(expected, result);
        }