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()); }
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); }
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); }