Beispiel #1
0
        public void Unify_str_lis()
        {
            StructureTerm s = new StructureTerm("s", 2);
            ListTerm      l = new ListTerm();

            Assert.IsFalse(s.Unify(l));
        }
Beispiel #2
0
        public void Unify_lis_str()
        {
            ListTerm      list = new ListTerm();
            StructureTerm con  = new StructureTerm("s", 2);

            Assert.IsFalse(list.Unify(con));
        }
Beispiel #3
0
        public override Predicate exec(Prolog engine)
        {
            Term      a1, a2, a3, a4, a5, a6, a7, a8, a9;
            Predicate p1, p2, p3, p4, p5, p6, p7, p8;

            a1 = engine.aregs[1].Dereference();
            a2 = engine.aregs[2].Dereference();
            a3 = engine.aregs[3].Dereference();
            a4 = engine.aregs[4].Dereference();
            a5 = engine.aregs[5].Dereference();
            a6 = engine.aregs[6].Dereference();
            a7 = engine.aregs[7].Dereference();
            Predicate cont = engine.cont;

            a8 = engine.makeVariable();
            Term[] h3 = { a6 };
            a9 = new StructureTerm(f2, h3);
            p1 = new Predicates.dollar_cut_1(a8, cont);
            p2 = new Predicates.CrearTrofeo_4(a1, a2, a7, a4, p1);
            p3 = new Predicates.dollar_plus_3(a3, s1, a7, p2);
            p4 = new Predicates.Assert_1(a9, p3);
            p5 = new Predicates.dollar_dummy__189511930__15_1(a6, p4);
            p6 = new Predicates.Contiene_2(a1, a6, p5);
            p7 = new Predicates.Random_3(s1, a5, a6, p6);
            p8 = new Predicates.dollar_plus_3(a2, s1, a5, p7);
            return(new Predicates.dollar_getLevel_1(a8, p8));
        }
Beispiel #4
0
        public void Unify_str_con()
        {
            ConstantTerm  term = new ConstantTerm("ali");
            StructureTerm s    = new StructureTerm("s", 2);

            Assert.IsFalse(s.Unify(term));
        }
        public override Predicate exec(Prolog engine)
        {
            engine.setB0();
            Term      a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13;
            Predicate p1, p2, p3;

            a1 = arg1.Dereference();
            a2 = arg2.Dereference();
            a3 = arg3.Dereference();
            a4 = arg4.Dereference();
            a5 = arg5.Dereference();

            Term[] h2 = { engine.makeVariable() };
            a6  = new StructureTerm(f1, h2);
            a7  = engine.makeVariable();
            a8  = engine.makeVariable();
            a13 = new ListTerm(a5, s3);
            a12 = new ListTerm(a4, a13);
            a11 = new ListTerm(a3, a12);
            a10 = new ListTerm(a2, a11);
            a9  = new ListTerm(a10, s3);
            p1  = new Predicates.Concatenar_Arreglos_3(a9, a8, a1, cont);
            p2  = new Predicates.Concatenar_Valor_3(a7, a2, a8, p1);
            p3  = new Predicates.GenerarCamino_4(a3, a2, s3, a7, p2);
            return(new Predicates.Retractall_1(a6, p3));
        }
Beispiel #6
0
        public void call_1()
        {
            AbstractMachineState state   = SetupMachine();
            AMProgram            program = (AMProgram)state.Program;

            _p = new CallPredicate();

            Verify("call", 1);

            AbstractTerm X0 = (AbstractTerm)state["X0"];

            StructureTerm goal = new StructureTerm("male", 1);

            goal.Next = new ConstantTerm("ali");
            program.AddLabel("male/1", new ProgramClause("male", 1));

            X0.Assign(goal);

            _p.Execute(state);

            Assert.AreEqual(X0.Data(), "ali");
            ProgramClause p = (ProgramClause)program.P;

            Assert.AreEqual(p.Name, "male");
            Assert.AreEqual(p.Arity, 1);
        }
Beispiel #7
0
        // Direction = V
        // Direction = H
        public bool AddMove(int Index, int Position, Direction Direction, out string clo)
        {
            clo = "non";
            //closeLine(Index, Position, v, Ori).
            VariableTerm aClo = new VariableTerm();

            FPEngine.SetPredicate(new Close_Line_4(new IntegerTerm(Index), new IntegerTerm(Position), new IntegerTerm((int)Direction), aClo, new ReturnCs(FPEngine)));

            if (FPEngine.Call())
            {
                clo = (string)aClo.ToCsObject();
                FPEngine.Success();
            }

            Term[] argss = { new IntegerTerm(Index), new IntegerTerm(Position), new IntegerTerm((int)Direction) };

            StructureTerm newLine = new StructureTerm(SymbolTerm.MakeSymbol("line", 3), argss);

            FPEngine.SetPredicate(new Assert_1(newLine, new ReturnCs(FPEngine)));

            if (FPEngine.Call())
            {
                FPEngine.Success();
                return true;
            }
            else
                return false;
        }
        public override Predicate exec(Prolog engine)
        {
            engine.setB0();
            Term      a1, a2, a3, a4, a5, a6;
            Predicate p1, p2, p3;

            a1 = arg1.Dereference();
            a2 = arg2.Dereference();
            a3 = arg3.Dereference();

            if (a1.IsList())
            {
                a4 = ((ListTerm)a1).cdr;
            }
            else if (a1.IsVariable())
            {
                a4 = engine.makeVariable();
                if (!a1.Unify(new ListTerm(engine.makeVariable(), a4), engine.trail))
                {
                    return(engine.fail());
                }
            }
            else
            {
                return(engine.fail());
            }
            a5 = engine.makeVariable();
            Term[] h2 = { engine.makeVariable() };
            a6 = new StructureTerm(f1, h2);
            p1 = new Predicates.dollar_cut_1(a5, cont);
            p2 = new Predicates.CrearTrofeo_4(a4, a2, s3, a3, p1);
            p3 = new Predicates.Retractall_1(a6, p2);
            return(new Predicates.dollar_getLevel_1(a5, p3));
        }
Beispiel #9
0
        public void ExecuteVar()
        {
            AbstractMachineState state = SetupMachine();

            ExecuteVariableInstruction i = new ExecuteVariableInstruction();

            i.Process(new string[] { "X0" });

            AMProgram program = (AMProgram)state.Program;

            ProgramClause x = new ProgramClause("male", 1);

            program.AddLabel("male/1", x);

            AbstractTerm X0 = (AbstractTerm)state["X0"];

            StructureTerm s = new StructureTerm("male", 1);

            s.Next = new ConstantTerm("ali");

            X0.Assign(s);

            i.Execute(state);


            Assert.AreSame(program.P, x);
            Assert.AreEqual("executevar", i.Name());
            Assert.AreEqual(1, i.NumberOfArguments());
        }
        public void Unify_con_str()
        {
            ConstantTerm  con  = new ConstantTerm("ali");
            StructureTerm term = new StructureTerm("samir", 2);

            Assert.IsFalse(con.Unify(term));
        }
Beispiel #11
0
        public void IsStructure()
        {
            StructureTerm t = new StructureTerm();
            AbstractTerm  a = new StructureTerm();

            Assert.IsTrue(t.IsStructure);
            Assert.IsTrue(a.IsStructure);
        }
Beispiel #12
0
        public void IsConstant()
        {
            StructureTerm t = new StructureTerm();
            AbstractTerm  a = new StructureTerm();

            Assert.IsFalse(t.IsConstant);
            Assert.IsFalse(a.IsConstant);
        }
Beispiel #13
0
        public void IsReference()
        {
            StructureTerm t = new StructureTerm();
            AbstractTerm  a = new StructureTerm();

            Assert.IsFalse(t.IsReference);
            Assert.IsFalse(a.IsReference);
        }
Beispiel #14
0
        public void IsObject()
        {
            StructureTerm t = new StructureTerm();
            AbstractTerm  a = new StructureTerm();

            Assert.IsFalse(t.IsObject);
            Assert.IsFalse(a.IsObject);
        }
Beispiel #15
0
        public void tan_expr()
        {
            StructureTerm addOp = new StructureTerm("tan", 1);

            addOp.Next = new ConstantTerm("5");


            eval(addOp, Math.Tan(5));
        }
Beispiel #16
0
        public void log_expr()
        {
            StructureTerm addOp = new StructureTerm("log", 1);

            addOp.Next = new ConstantTerm("5");


            eval(addOp, Math.Log(5));
        }
Beispiel #17
0
        public void pow_expr()
        {
            StructureTerm op = new StructureTerm("^", 2);

            op.Next      = new ConstantTerm("3");
            op.Next.Next = new ConstantTerm("2");

            eval(op, Math.Pow(3, 2));
        }
Beispiel #18
0
        public void sub_expr()
        {
            StructureTerm addOp = new StructureTerm("-", 2);

            addOp.Next      = new ConstantTerm("5");
            addOp.Next.Next = new ConstantTerm("2");

            eval(addOp, 3);
        }
Beispiel #19
0
        public void mul_expr()
        {
            StructureTerm addOp = new StructureTerm("*", 2);

            addOp.Next      = new ConstantTerm("5");
            addOp.Next.Next = new ConstantTerm("2");

            eval(addOp, 10);
        }
Beispiel #20
0
        public void div_expr()
        {
            StructureTerm addOp = new StructureTerm("/", 2);

            addOp.Next      = new ConstantTerm("6");
            addOp.Next.Next = new ConstantTerm("2");

            eval(addOp, 6 / 2);
        }
Beispiel #21
0
        public void add_expr()
        {
            StructureTerm addOp = new StructureTerm("+", 2);

            addOp.Next      = new ConstantTerm("1");
            addOp.Next.Next = new ConstantTerm("2");

            eval(addOp, 3);
        }
Beispiel #22
0
        public void cos_expr()
        {
            StructureTerm addOp = new StructureTerm("cos", 1);

            addOp.Next = new ConstantTerm("5");


            eval(addOp, Math.Cos(5));
        }
Beispiel #23
0
        public void Indexing()
        {
            StructureTerm s = new StructureTerm("s", 2);

            s.Next      = new ConstantTerm("ali");
            s.Next.Next = new ConstantTerm("samir");

            Assert.AreEqual("ali", s[0].Data());
            Assert.AreEqual("samir", s[1].Data());
        }
Beispiel #24
0
        public void Push_StructureTerm()
        {
            AMHeap heap = new AMHeap();

            StructureTerm con = new StructureTerm("Hello, World!", 2);

            heap.Push(con);

            Assert.AreSame(con, heap.Top());
        }
Beispiel #25
0
        public void Unify_str_ref()
        {
            AbstractTerm  term = new AbstractTerm();
            StructureTerm s    = new StructureTerm("s", 2);

            Assert.IsTrue(s.Unify(term));

            Assert.AreEqual(term.Arity, s.Arity);
            Assert.AreEqual(term.Name, s.Name);
        }
        public void Unify_ref_str()
        {
            AbstractTerm  term = new AbstractTerm();
            StructureTerm con  = new StructureTerm();

            Assert.IsTrue(term.Unify(con));

            Assert.AreSame(term.Reference(), con.Reference());
            Assert.IsTrue(term.IsStructure);
            Assert.IsFalse(term.IsReference);
        }
Beispiel #27
0
        public override Predicate exec(Prolog engine)
        {
            Term a1, a2, a3;

            a1 = engine.aregs[1].Dereference();
            a2 = engine.aregs[2].Dereference();
            Predicate cont = engine.cont;

            Term[] h2 = { a1, a2 };
            a3 = new StructureTerm(f1, h2);
            return(new Predicates.Retract_1(a3, cont));
        }
Beispiel #28
0
        public override Predicate exec( Prolog engine )
        {
            engine.setB0();
            Term a1, a2;
            Predicate p1;

            Term[] h2 = {engine.makeVariable()};
            a1 = new StructureTerm(f1, h2);
            Term[] h4 = {engine.makeVariable()};
            a2 = new StructureTerm(f3, h4);
            p1 = new Predicates.Retractall_1(a2, cont);
            return new Predicates.Retractall_1(a1, p1);
        }
Beispiel #29
0
        public override Predicate exec( Prolog engine )
        {
            engine.setB0();
            Term a1, a2, a3;
            Predicate p1;
            a1 = arg1.Dereference();

            Term[] h2 = {a1};
            a2 = new StructureTerm(f1, h2);
            a3 = engine.makeVariable();
            p1 = new Predicates.dollar_call_1(a3, cont);
            return new Predicates.Clause_2(a2, a3, p1);
        }
        public override Predicate exec(Prolog engine)
        {
            Term      a1, a2;
            Predicate p1;

            a1 = engine.aregs[1].Dereference();
            Predicate cont = engine.cont;

            Term[] h2 = { a1 };
            a2 = new StructureTerm(f1, h2);
            p1 = new Predicates.Assert_1(a2, cont);
            return(new Predicates.dollar_dummy__189511930__13_1(a1, p1));
        }
        public override Predicate exec(Prolog engine)
        {
            engine.setB0();
            Term      a1, a2, a3;
            Predicate p1;

            a1 = arg1.Dereference();

            Term[] h2 = { a1 };
            a2 = new StructureTerm(f1, h2);
            a3 = engine.makeVariable();
            p1 = new Predicates.dollar_call_1(a3, cont);
            return(new Predicates.Clause_2(a2, a3, p1));
        }
        public override Predicate exec(Prolog engine)
        {
            engine.setB0();
            Term      a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21;
            Predicate p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16;

            a1 = arg1.Dereference();
            a2 = arg2.Dereference();
            a3 = arg3.Dereference();
            a4 = arg4.Dereference();
            a5 = arg5.Dereference();

            a6  = engine.makeVariable();
            a7  = engine.makeVariable();
            a8  = engine.makeVariable();
            a9  = engine.makeVariable();
            a10 = engine.makeVariable();
            Term[] h2 = { engine.makeVariable() };
            a11 = new StructureTerm(f1, h2);
            a12 = engine.makeVariable();
            Term[] h4 = { engine.makeVariable(), engine.makeVariable() };
            a13 = new StructureTerm(f3, h4);
            Term[] h6 = { engine.makeVariable() };
            a14 = new StructureTerm(f5, h6);
            a15 = engine.makeVariable();
            a16 = engine.makeVariable();
            Term[] h9 = { engine.makeVariable() };
            a17 = new StructureTerm(f8, h9);
            a18 = engine.makeVariable();
            a19 = engine.makeVariable();
            a20 = new ListTerm(a12, s10);
            a21 = new ListTerm(a19, s10);
            p1  = new Predicates.dollar_cut_1(a6, cont);
            p2  = new Predicates.Verificar_Laberinto_1(a1, p1);
            p3  = new Predicates.Concatenar_Arreglos_3(a20, a21, a1, p2);
            p4  = new Predicates.ObtenerArregloTrofeos_1(a19, p3);
            p5  = new Predicates.CrearTrofeos_3(a12, a8, a18, p4);
            p6  = new Predicates.Calcular_Cant_Trofeos_3(a16, a4, a18, p5);
            p7  = new Predicates.Retractall_1(a17, p6);
            p8  = new Predicates.dollar_minus_3(a15, s7, a16, p7);
            p9  = new Predicates.Contar_2(a12, a15, p8);
            p10 = new Predicates.Retractall_1(a14, p9);
            p11 = new Predicates.Retractall_1(a13, p10);
            p12 = new Predicates.GenerarCamino_5(a12, a9, a10, a2, a3, p11);
            p13 = new Predicates.Retractall_1(a11, p12);
            p14 = new Predicates.CrearCamino_5(a2, a3, a7, a9, a10, p13);
            p15 = new Predicates.dollar_multi_3(a2, a3, a8, p14);
            p16 = new Predicates.Calcular_Cant_Muros_2(a2, a7, p15);
            return(new Predicates.dollar_getLevel_1(a6, p16));
        }
Beispiel #33
0
        public void Unify_str_ref_str()
        {
            StructureTerm s1 = new StructureTerm("s", 1);

            s1.Next = new AbstractTerm();

            StructureTerm s2 = new StructureTerm("s", 1);

            s2.Next = new ConstantTerm("ali");

            Assert.IsTrue(s1.Unify(s2));

            Assert.AreEqual(s1[0].Data(), s2[0].Data());
        }
Beispiel #34
0
        public override Predicate exec( Prolog engine )
        {
            Term a1, a2, a3, a4, a5;
            Predicate p1, p2, p3, p4;
            a1 = engine.aregs[1].Dereference();
            a2 = engine.aregs[2].Dereference();
            a3 = engine.aregs[3].Dereference();
            Predicate cont = engine.cont;

            a4 = engine.makeVariable();
            Term[] h2 = {a1, a2, a3};
            a5 = new StructureTerm(f1, h2);
            p1 = new Predicates.dollar_fail_0(cont);
            p2 = new Predicates.dollar_cut_1(a4, p1);
            p3 = new Predicates.Retract_1(a5, p2);
            p4 = new Predicates.Free_Close_Line_4(engine.makeVariable(), engine.makeVariable(), engine.makeVariable(), engine.makeVariable(), p3);
            return new Predicates.dollar_getLevel_1(a4, p4);
        }
Beispiel #35
0
        public void Clear()
        {
            VariableTerm Index = new VariableTerm();
            VariableTerm Position = new VariableTerm();
            VariableTerm Direction = new VariableTerm();
            Term[] argss = { Index, Position, Direction };

            StructureTerm newLine = new StructureTerm(SymbolTerm.MakeSymbol("line", 3), argss);

            FPEngine.SetPredicate(new Retractall_1(newLine, new ReturnCs(FPEngine)));

            if (FPEngine.Call())
            {
                FPEngine.Success();
            }
        }
Beispiel #36
0
        public string go(bool FirstRed, GameLevel RedPlayer, GameLevel YellowPlayer)
        {
            List<int> Indexes = GenerateArray(7);
            List<int> Positions = GenerateArray(6);

            #region Create Terms Indexes and Positions
            ListTerm lindexes = new ListTerm(new IntegerTerm(Indexes[0]),
            new ListTerm(new IntegerTerm(Indexes[1]),
                new ListTerm(new IntegerTerm(Indexes[2]),
                    new ListTerm(new IntegerTerm(Indexes[3]),
                        new ListTerm(new IntegerTerm(Indexes[4]),
                            new ListTerm(new IntegerTerm(Indexes[5]),
                                new ListTerm(new IntegerTerm(Indexes[6]), SymbolTerm.MakeSymbol("[]"))))))));

            ListTerm lpositions = new ListTerm(new IntegerTerm(Positions[0]),
            new ListTerm(new IntegerTerm(Positions[1]),
                new ListTerm(new IntegerTerm(Positions[2]),
                    new ListTerm(new IntegerTerm(Positions[3]),
                        new ListTerm(new IntegerTerm(Positions[4]),
                            new ListTerm(new IntegerTerm(Positions[5]), SymbolTerm.MakeSymbol("[]")))))));
            #endregion

            FPEngine.SetPredicate(new Deldb_0(new ReturnCs(FPEngine)));

            if (!FPEngine.Call())
            {
                aReturnString = "false";
                return aReturnString;
            }

            FPEngine.Success();
            StructureTerm a;
            Term[] args = { lpositions };
            a = new StructureTerm(SymbolTerm.MakeSymbol("availablePositions", 1), args);

            FPEngine.SetPredicate(new Assert_1(a, new ReturnCs(FPEngine)));

            if (FPEngine.Call())
            {
                FPEngine.Success();

                Term[] argss = { lindexes };
                a = new StructureTerm(SymbolTerm.MakeSymbol("availableIndexs", 1), argss);

                FPEngine.SetPredicate(new Assert_1(a, new ReturnCs(FPEngine)));

                if (FPEngine.Call())
                {
                    FPEngine.Success();
                    S();

                    VariableTerm Index = new VariableTerm();
                    VariableTerm Position = new VariableTerm();
                    VariableTerm Dir = new VariableTerm();
                    VariableTerm Team = new VariableTerm();
                    VariableTerm Orientation = new VariableTerm();
                    String aDirection;

                    if (FirstRed)
                        switch (RedPlayer)
                        {
                            case GameLevel.Easy:
                                FPEngine.SetPredicate(new Go_5(Index, Position, Dir, Team, Orientation, new ReturnCs(FPEngine)));
                                break;
                            case GameLevel.Normal:
                                FPEngine.SetPredicate(new GoSmart_5(Index, Position, Dir, Team, Orientation, new ReturnCs(FPEngine)));
                                break;
                            case GameLevel.Hard:
                                break;
                        }
                    else
                        switch (YellowPlayer)
                        {
                            case GameLevel.Easy:
                                FPEngine.SetPredicate(new Go_5(Index, Position, Dir, Team, Orientation, new ReturnCs(FPEngine)));
                                break;
                            case GameLevel.Normal:
                                FPEngine.SetPredicate(new GoSmart_5(Index, Position, Dir, Team, Orientation, new ReturnCs(FPEngine)));
                                break;
                            case GameLevel.Hard:
                                break;
                        }

                    if (!FPEngine.Call())
                    {
                        aReturnString = "false";

                        return aReturnString;
                    }

                    this.aIndex = (int)Index.ToCsObject();
                    this.aPosition = (int)Position.ToCsObject();

                    this.aDirection = (Direction)Dir.ToCsObject();
                    string or = (string)Orientation.ToCsObject();
                    if (or == "left")
                        this.Ori = Ori.left;
                    else if (or == "leftright")
                        this.Ori = Ori.leftright;
                    else if (or == "rightleft")
                        this.Ori = Ori.rightleft;
                    else if (or == "right")
                        this.Ori = Ori.right;
                    else if (or == "up")
                        this.Ori = Ori.up;
                    else if (or == "updown")
                        this.Ori = Ori.updown;
                    else if (or == "downup")
                        this.Ori = Ori.downup;
                    else if (or == "down")
                        this.Ori = Ori.down;
                    else if (or == "non")
                        this.Ori = Ori.non;

                    FPEngine.Success();
                    aReturnString = (string)Team.ToCsObject();
                    return aReturnString;
                }
            }
            aReturnString = "false";
            return aReturnString;
        }
Beispiel #37
0
        public override Predicate exec( Prolog engine )
        {
            Term a1, a2, a3, a4, a5, a6, a7;
            Predicate p1, p2, p3;
            a1 = engine.aregs[1].Dereference();
            a2 = engine.aregs[2].Dereference();
            a3 = engine.aregs[3].Dereference();
            a4 = engine.aregs[4].Dereference();
            a5 = engine.aregs[5].Dereference();
            Predicate cont = engine.cont;

            if ( !s1.Unify(a3, engine.trail) ) return engine.fail();
            if ( !s2.Unify(a4, engine.trail) ) return engine.fail();
            a6 = engine.makeVariable();
            Term[] h4 = {a1, a2, s1};
            a7 = new StructureTerm(f3, h4);
            p1 = new Predicates.dollar_cut_1(a6, cont);
            p2 = new Predicates.Assert_1(a7, p1);
            p3 = new Predicates.Free_Close_Line_4(a1, a2, s1, a5, p2);
            return new Predicates.dollar_getLevel_1(a6, p3);
        }
Beispiel #38
0
        public override Predicate exec( Prolog engine )
        {
            Term a1, a2, a3, a4, a5, a6, a7, a8, a9;
            Predicate p1, p2, p3, p4, p5;
            a1 = engine.aregs[1].Dereference();
            a2 = engine.aregs[2].Dereference();
            a3 = engine.aregs[3].Dereference();
            a4 = engine.aregs[4].Dereference();
            a5 = engine.aregs[5].Dereference();
            Predicate cont = engine.cont;

            if ( !s1.Unify(a4, engine.trail) ) return engine.fail();
            if ( !s1.Unify(a5, engine.trail) ) return engine.fail();
            a6 = engine.makeVariable();
            a8 = engine.makeVariable();
            a7 = new ListTerm(a8, engine.makeVariable());
            Term[] h3 = {a1, a2, a3};
            a9 = new StructureTerm(f2, h3);
            p1 = new Predicates.dollar_cut_1(a6, cont);
            p2 = new Predicates.Assert_1(a9, p1);
            p3 = new Predicates.Free_Line_3(a1, a2, a3, p2);
            p4 = new Predicates.dollar_dummyLogic__4_2(a3, a8, p3);
            p5 = new Predicates.Available_Indexs_1(a7, p4);
            return new Predicates.dollar_getLevel_1(a6, p5);
        }