public void GetNextNodeLRPTest_Input5ElementTerm_ReturnsListOf4InReversedOrder() { var kTerm = CombinatorK.ConstructCombinator(); var iTerm = CombinatorI.ConstructCombinator(); string name3 = "rumba"; var term3 = new Constant(name3); string name4 = "spinner"; var term4 = new Constant(name4); string name5 = "vape"; var term5 = new Constant(name5); var startingTermsList = new Term[] { kTerm, iTerm, term3, term4, term5 }; var term = Term.BuildWith(startingTermsList); var result = new List <Term>(); term = TreeTraversal.GetLowestLeftNode(term); for (int i = 0; i < startingTermsList.Length - 1; i++) { term = TreeTraversal.GetNextNodeLRP(term); result.Add(term); } Assert.Multiple(() => { Assert.AreEqual(iTerm.Stringify(), result[0].Stringify()); Assert.AreEqual(term3.Stringify(), result[1].Stringify()); Assert.AreEqual(term4.Stringify(), result[2].Stringify()); Assert.AreEqual(term5.Stringify(), result[3].Stringify()); }); }
public void TermReductionTest_InputCombinatorK_ReturnsSameStringificationResult() { var term1 = CombinatorK.ConstructCombinator(); var expected = term1.Stringify(); var reductionResult = Term.BuildWith(new Term[] { term1 }).Reduce(); var result = term1.Stringify(); Assert.AreEqual(expected, result); }
public void GetLowestLeftTerm_Input1ElementTerm_ReturnsTheElement() { var kTerm = CombinatorK.ConstructCombinator(); var startingTermsList = new Term[] { kTerm, }; var term = Term.BuildWith(startingTermsList); var result = TreeTraversal.GetLowestLeftNode(term); Assert.AreEqual(result.Stringify(), kTerm.Stringify()); }
public void TermReductionTest_InputNormalForms_ReturnsSameStringificationResult() { var term1 = CombinatorK.ConstructCombinator(); var expected = Term.BuildWith(new Term[] { term1 }); var result = Term.EvaluateWith(new Term[] { term1 }); var resultStr = result.Stringify(); Assert.AreEqual(expected.ToString(), resultStr); }
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(); }
private static void EvaluateAndPrintKxx() { var K = CombinatorK.ConstructCombinator(); var one = new Constant("1"); var two = new Constant("2"); Console.WriteLine($"Evaluating term {K} {one} {two}"); var stmt2 = Term.EvaluateWith(new Term[] { K, one, two }).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()); }
private static void test() { var kTerm = CombinatorK.ConstructCombinator(); var kTerm1 = CombinatorK.ConstructCombinator(); var x = new Constant("x"); var y = new Constant("y"); var z = new Constant("z"); Console.WriteLine($"Evaluating {kTerm} {kTerm1} {x} {y} {z}"); Term.EvaluateWith(new Term[] { kTerm, kTerm1, x, y, z }).Dump(); Whitespace(); }
private static void EvaluateAndPrintTermWithCommas() { var kTerm = CombinatorK.ConstructCombinator(); var x = new Variable("x"); var y = new Variable("y"); var z = new Variable("z"); var tupleTerm = new Term(y, z); Console.WriteLine($"Evaluating {kTerm} ({y} {z}) {x}"); Console.WriteLine("After evaluation:"); Term.EvaluateWith(new Term[] { kTerm, tupleTerm, x }).Dump(); Whitespace(); }
public void StringifyLongTerm_Input5ElementArray_Returns5ElementTermRepresentation() { var KTerm = CombinatorK.ConstructCombinator(); var name1 = "drake"; var term1 = new Constant(name1); var name2 = "kanye"; var term2 = new Constant(name2); string expected = $"((((K,K),K),{name1}),{name2})"; var term = Term.BuildWith(new Term[] { KTerm, KTerm, KTerm, term1, term2 }); }
public void TermReductionTest_InputNonLinearTermAltOrder_ReturnsCorrectlyRecudedTerm() { var name2 = "kyle"; var name3 = "jacquline"; var name4 = "trish"; var kTerm = CombinatorK.ConstructCombinator(); var termKyle = new Constant(name2); var expected = Term.BuildWith(new Term[] { termKyle }).Stringify(); var termTwins = new Term(new Constant(name3), new Constant(name4)); var term = Term.EvaluateWith(new Term[] { kTerm, termKyle, termTwins }); Assert.AreEqual(expected, term.ToString()); }
public void TermReductionTest_InputReducableTermWithKCombinator_ReturnsReducedTerm() { var kTerm = CombinatorK.ConstructCombinator(); string name2 = "pupa"; var term2 = new Constant(name2); string name3 = "lupa"; var term3 = new Constant(name3); var expected = Term.BuildWith(new Term[] { term2 }).Stringify(); var reductionResult = Term.EvaluateWith(new Term[] { kTerm, term2, term3 }); var resultStr = reductionResult.Stringify(); Assert.AreEqual(expected, resultStr); }
public void StringifyMidrangeTerm_Imput3ElementArray_Returns3ElementTermRepresentation() { var term1 = CombinatorK.ConstructCombinator(); var name2 = "mtn_dew"; var term2 = new Constant(name2); var name3 = "bepis"; var term3 = new Constant(name3); string expected = $"((K,{name2}),{name3})"; var term = Term.BuildWith(new Term[] { term1, term2, term3 }); var result = term.Stringify(); Assert.AreEqual(expected, result); }
public void GetLowestLeftTerm_Input5ElementTerm_ReturnsFirstAddedTerm() { var kTerm = CombinatorK.ConstructCombinator(); var kTerm1 = CombinatorK.ConstructCombinator(); string name3 = "rumba"; var term3 = new Constant(name3); string name4 = "spinner"; var term4 = new Constant(name4); string name5 = "vape"; var term5 = new Constant(name5); var startingTermsList = new Term[] { kTerm, kTerm1, term3, term4, term5 }; var term = Term.BuildWith(startingTermsList); var result = TreeTraversal.GetLowestLeftNode(term); Assert.AreEqual(result.Stringify(), kTerm.Stringify()); }
public void StringifyLongTerm_Input5ElementArrayv2_Returns5ElementTermRepresentation() { var kTerm = CombinatorK.ConstructCombinator(); var kTerm1 = CombinatorK.ConstructCombinator(); string name3 = "rumba"; var term3 = new Constant(name3); string name4 = "spinner"; var term4 = new Constant(name4); string name5 = "vape"; var term5 = new Constant(name5); var expected = $"((((K,K),{name3}),{name4}),{name5})"; var result = Term.BuildWith(new Term[] { kTerm, kTerm1, term3, term4, term5 }); Assert.AreEqual(expected, result.Stringify()); }
public void TermReductionTest_InputReducableTermWith2KCombinators_ReturnsReducedTerm() { var kTerm = CombinatorK.ConstructCombinator(); var kTerm1 = CombinatorK.ConstructCombinator(); string name3 = "rumba"; var term3 = new Constant(name3); string name4 = "spinner"; var term4 = new Constant(name4); string name5 = "vape"; var term5 = new Constant(name5); var expected = Term.BuildWith(new Term[] { term4 }).Stringify(); var result = Term.EvaluateWith(new Term[] { kTerm, kTerm1, term3, term4, term5 }); Assert.AreEqual(expected, result.Stringify()); }
public void TermReductionTest_InputReducableNonLinearlyTermWith2KCombinators_ReturnsReducedTerm() { var kTerm = CombinatorK.ConstructCombinator(); var kTerm1 = CombinatorK.ConstructCombinator(); string name3 = "egg"; var term3 = new Constant(name3); string name4 = "long egg"; var term4 = new Constant(name4); string name5 = "applause"; var term5 = new Constant(name5); string name6 = "gone"; var term6 = new Constant(name6); var expected = Term.BuildWith(new Term[] { term3, term5 }).Stringify(); var result = Term.EvaluateWith(new Term[] { kTerm, term3, term4, kTerm1, term5, term6 }); Assert.AreEqual(expected, result.Stringify()); }