Exemplo n.º 1
0
 public ParameterizedPredicate(ParameterizedPredicate pp)
     : base(pp.Name)
 {
     m_lParameters = new List <Argument>(pp.m_lParameters);
     Negation      = pp.Negation;
     Parameterized = pp.Parameterized;
 }
Exemplo n.º 2
0
        public override bool Equals(object obj)
        {
            if (obj is ParameterizedPredicate)
            {
                ParameterizedPredicate pp = (ParameterizedPredicate)obj;
                if (pp.Name != Name)
                {
                    return(false);
                }
                if (m_lParameters.Count != pp.m_lParameters.Count)
                {
                    return(false);
                }

                for (int iParameter = 0; iParameter < m_lParameters.Count; iParameter++)
                {
                    if (!m_lParameters[iParameter].Equals(pp.m_lParameters[iParameter]))
                    {
                        return(false);
                    }
                }
                return(Negation == pp.Negation);
            }
            return(false);
        }
Exemplo n.º 3
0
        public override Predicate GenerateKnowGiven(string sTag, bool bKnowWhether)
        {
            if (bKnowWhether)
            {
                throw new NotImplementedException("There should no longer be any Know Whether prediate");
            }
            ParameterizedPredicate pKGiven = null;

            if (bKnowWhether)
            {
                pKGiven = new ParameterizedPredicate("KWGiven" + Name);
            }
            else
            {
                pKGiven = new ParameterizedPredicate("KGiven" + Name);
            }
            foreach (Argument a in Parameters)
            {
                pKGiven.AddParameter(a);
            }
            pKGiven.AddParameter(new Parameter(Domain.TAG, sTag));
            if (!bKnowWhether)
            {
                if (Negation)
                {
                    pKGiven.AddParameter(new Parameter(Domain.VALUE, Domain.FALSE_VALUE));
                }
                else
                {
                    pKGiven.AddParameter(new Parameter(Domain.VALUE, Domain.TRUE_VALUE));
                }
            }
            return(pKGiven);
        }
Exemplo n.º 4
0
        //for SDR
        public static Predicate GenerateKNot(Argument pTag)
        {
            ParameterizedPredicate pp = new ParameterizedPredicate("KNot");

            pp.AddParameter(pTag);
            return(pp);
        }
Exemplo n.º 5
0
        public Dictionary <string, Constant> Bind(ParameterizedPredicate p)
        {
            if (Name != p.Name)
            {
                return(null);
            }

            if (((List <Constant>)Constants).Count != ((List <Argument>)p.Parameters).Count)
            {
                return(null);
            }

            Dictionary <string, Constant> dBindings = new Dictionary <string, Constant>();

            for (int i = 0; i < Constants.Count; i++)
            {
                Argument arg = p.Parameters.ElementAt(i);
                if (arg is Constant)
                {
                    if (!Constants[i].Equals(arg))
                    {
                        return(null);
                    }
                }
                if (arg is Parameter)
                {
                    dBindings[arg.Name] = Constants[i];
                }
            }
            return(dBindings);
        }
Exemplo n.º 6
0
        public override Predicate Negate()
        {
            ParameterizedPredicate pNegate = new ParameterizedPredicate(Name);

            pNegate.Negation      = !Negation;
            pNegate.m_lParameters = new List <Argument>(m_lParameters);
            return(pNegate);
        }
Exemplo n.º 7
0
        public override Predicate GenerateGiven(string sTag)
        {
            ParameterizedPredicate pGiven = new ParameterizedPredicate("Given" + Name);

            foreach (Argument a in Parameters)
            {
                pGiven.AddParameter(a);
            }
            pGiven.AddParameter(new Parameter(Domain.TAG, sTag));
            if (Negation)
            {
                return(pGiven.Negate());
            }
            return(pGiven);
        }
Exemplo n.º 8
0
        public Predicate PartiallyGround(Dictionary <string, Constant> dBindings)
        {
            GroundedPredicate      gpred = new GroundedPredicate(Name, Negation);
            ParameterizedPredicate ppred = new ParameterizedPredicate(Name, Negation);
            bool bAllGrounded            = true;

            foreach (Argument a in Parameters)
            {
                if (a is Parameter)
                {
                    if (!dBindings.ContainsKey(a.Name))
                    {
                        ppred.AddParameter(a);
                        bAllGrounded = false;
                    }
                    else
                    {
                        ppred.AddParameter(dBindings[a.Name]);
                        gpred.AddConstant(dBindings[a.Name]);
                    }
                }
                else
                {
                    gpred.AddConstant((Constant)a);
                    ppred.AddParameter(a);
                }
            }
            if (bAllGrounded)
            {
                if (gpred.Name == "=")
                {
                    bool bSame = gpred.Constants[0].Equals(gpred.Constants[1]);
                    if (bSame && !Negation || !bSame && Negation)
                    {
                        return(Domain.TRUE_PREDICATE);
                    }
                    else
                    {
                        return(Domain.FALSE_PREDICATE);
                    }
                }
                return(gpred);
            }
            else
            {
                return(ppred);
            }
        }
Exemplo n.º 9
0
        public override Predicate ToTag()
        {
            ParameterizedPredicate ppNew = new ParameterizedPredicate(this);

            if (Negation)
            {
                ppNew.Name = ppNew.Name + "-Remove";
            }
            else
            {
                ppNew.Name = ppNew.Name + "-Add";
            }
            ppNew.Negation = false;

            return(ppNew);
        }