コード例 #1
0
        public void Test_Commutative_4()
        {
            //1+(1+a) -> (a+1)+1
            var a    = new Var('a');
            var term = new Term(Expression.Add, new List <object>()
            {
                1, a
            });
            var term1 = new Term(Expression.Add, new List <object>()
            {
                1, term
            });

            Assert.True(term1.ToString().Equals("1+1+a"));

            object result = term1.EvalAlgebra();

            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("a+2"));
            Assert.True(term1.Traces.Count == 1);

            var lst = term1.Traces[0].Item2 as List <TraceStep>;

            Assert.NotNull(lst);
            Assert.True(lst.Count == 4);
        }
コード例 #2
0
        public void Test_Commutative_5()
        {
            //(1+a)*2 -> 2*(a+1)
            var a    = new Var('a');
            var term = new Term(Expression.Add, new List <object>()
            {
                1, a
            });
            var term1 = new Term(Expression.Multiply, new List <object>()
            {
                term, 2
            });

            Assert.True(term1.ToString().Equals("(1+a)2"));

            object result = term1.EvalAlgebra();

            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("2a+2"));
            Assert.True(term1.Traces.Count == 1);

            var lst = term1.Traces[0].Item2 as List <TraceStep>;

            Assert.NotNull(lst);
            Assert.True(lst.Count == 4);
        }
コード例 #3
0
 public void Test_Commutative_2()
 {
     //x*3 -> 3*x
     var x = new Var('x');
     var a = new Term(Expression.Multiply, new List<object>() { x, 3 });
     object result = a.EvalAlgebra();
     Assert.NotNull(result);
     Assert.True(result.ToString().Equals("3x"));
     Assert.True(a.Traces.Count == 1);
 }
コード例 #4
0
 public void Test_Commutative_1_NonLinear_2()
 {
     // x+x^2 -> x^2+x
     var x = new Var('x');
     var x_square = new Term(Expression.Power, new List<object>() { x, 2 });
     var term = new Term(Expression.Add, new List<object>() { x, x_square });
     object result = term.EvalAlgebra();
     var gTerm = result as Term;
     Assert.NotNull(gTerm);
     Assert.NotNull(result);
     Assert.True(result.ToString().Equals("x^2+x"));
 }
コード例 #5
0
 public void Test_Commutative_1()
 {
     //3+x -> x+3             
     var x = new Var('x');
     var a = new Term(Expression.Add, new List<object>() { 3, x });
     object result = a.EvalAlgebra();
     var gTerm = result as Term;
     Assert.NotNull(gTerm);
     Assert.NotNull(result);
     Assert.True(result.ToString().Equals("x+3"));
     Assert.True(a.Traces.Count == 1);
 }
コード例 #6
0
        public void Test_Identity_1()
        {
            //x+x->(1+1)x->2x
            var x    = new Var('x');
            var term = new Term(Expression.Add, new List <object>()
            {
                x, x
            });
            object result = term.EvalAlgebra();

            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("2x"));
            Assert.True(term.Traces.Count == 1);
        }
コード例 #7
0
        public void Test_Commutative_2()
        {
            //x*3 -> 3*x
            var x = new Var('x');
            var a = new Term(Expression.Multiply, new List <object>()
            {
                x, 3
            });
            object result = a.EvalAlgebra();

            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("3x"));
            Assert.True(a.Traces.Count == 1);
        }
コード例 #8
0
        public void Test_Commutative_2_NonLinear()
        {
            //x^2*3 -> 3*x^2
            var x        = new Var('x');
            var x_square = new Term(Expression.Power, new List <object>()
            {
                x, 2
            });
            var a = new Term(Expression.Multiply, new List <object>()
            {
                x_square, 3
            });
            object result = a.EvalAlgebra();

            Assert.True(result.ToString().Equals("3(x^2)"));
        }
コード例 #9
0
        public void Test_Commutative_1()
        {
            //3+x -> x+3
            var x = new Var('x');
            var a = new Term(Expression.Add, new List <object>()
            {
                3, x
            });
            object result = a.EvalAlgebra();
            var    gTerm  = result as Term;

            Assert.NotNull(gTerm);
            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("x+3"));
            Assert.True(a.Traces.Count == 1);
        }
コード例 #10
0
        public void Test_Commutative_3_NonLinear()
        {
            //3*x^2*3 -> 9*x
            var x        = new Var('x');
            var x_square = new Term(Expression.Power, new List <object>()
            {
                x, 2
            });
            var a = new Term(Expression.Multiply, new List <object>()
            {
                3, x_square, 3
            });
            object result = a.EvalAlgebra();

            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("9(x^2)"));
            Assert.True(a.Traces.Count == 1);
        }
コード例 #11
0
        public void Test_Identity_2()
        {
            //y+2*y ->1*y+2*y
            var y    = new Var('y');
            var term = new Term(Expression.Multiply, new List <object>()
            {
                2, y
            });
            var term1 = new Term(Expression.Add, new List <object>()
            {
                y, term
            });
            object result = term1.EvalAlgebra();

            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("3y"));
            Assert.True(term1.Traces.Count == 1);
        }
コード例 #12
0
        public void Test_Commutative_1_NonLinear_2()
        {
            // x+x^2 -> x^2+x
            var x        = new Var('x');
            var x_square = new Term(Expression.Power, new List <object>()
            {
                x, 2
            });
            var term = new Term(Expression.Add, new List <object>()
            {
                x, x_square
            });
            object result = term.EvalAlgebra();
            var    gTerm  = result as Term;

            Assert.NotNull(gTerm);
            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("x^2+x"));
        }
コード例 #13
0
 public void Test_Commutative_3_NonLinear()
 {
     //3*x^2*3 -> 9*x
     var x = new Var('x');
     var x_square = new Term(Expression.Power, new List<object>() { x, 2 });
     var a = new Term(Expression.Multiply, new List<object>() { 3, x_square, 3 });
     object result = a.EvalAlgebra();
     Assert.NotNull(result);
     Assert.True(result.ToString().Equals("9(x^2)"));
     Assert.True(a.Traces.Count == 1);
 }
コード例 #14
0
        public void Test_Commutative_5()
        {
            //(1+a)*2 -> 2*(a+1)
            var a = new Var('a');
            var term = new Term(Expression.Add, new List<object>() { 1, a });
            var term1 = new Term(Expression.Multiply, new List<object>() { term, 2 });
            Assert.True(term1.ToString().Equals("(1+a)2"));

            object result = term1.EvalAlgebra();
            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("2a+2"));
            Assert.True(term1.Traces.Count == 1);

            var lst = term1.Traces[0].Item2 as List<TraceStep>;
            Assert.NotNull(lst);
            Assert.True(lst.Count == 4);
        }
コード例 #15
0
 public void Test_Identity_1()
 {
     //x+x->(1+1)x->2x
     var x = new Var('x');
     var term = new Term(Expression.Add, new List<object>() { x, x });
     object result = term.EvalAlgebra();
     Assert.NotNull(result);
     Assert.True(result.ToString().Equals("2x"));
     Assert.True(term.Traces.Count == 1);
 }
コード例 #16
0
 public void Test_Identity_2()
 {
     //y+2*y ->1*y+2*y
     var y = new Var('y');
     var term = new Term(Expression.Multiply, new List<object>() { 2, y });
     var term1 = new Term(Expression.Add, new List<object>() { y, term });
     object result = term1.EvalAlgebra();
     Assert.NotNull(result);
     Assert.True(result.ToString().Equals("3y"));
     Assert.True(term1.Traces.Count == 1);
 }
コード例 #17
0
        public void Test_Commutative_4()
        {
            //1+(1+a) -> (a+1)+1
            var a = new Var('a');
            var term = new Term(Expression.Add, new List<object>() { 1, a });
            var term1 = new Term(Expression.Add, new List<object>() { 1, term });
            Assert.True(term1.ToString().Equals("1+1+a"));

            object result = term1.EvalAlgebra();
            Assert.NotNull(result);
            Assert.True(result.ToString().Equals("a+2"));
            Assert.True(term1.Traces.Count == 1);

            var lst = term1.Traces[0].Item2 as List<TraceStep>;
            Assert.NotNull(lst);
            Assert.True(lst.Count == 4);
        }
コード例 #18
0
 public void Test_Commutative_2_NonLinear()
 {
     //x^2*3 -> 3*x^2
     var x = new Var('x');
     var x_square = new Term(Expression.Power, new List<object>() { x, 2 });
     var a = new Term(Expression.Multiply, new List<object>() { x_square, 3 });
     object result = a.EvalAlgebra();
     Assert.True(result.ToString().Equals("3(x^2)"));
 }