Exemple #1
0
        public static List <IPredicate> PredicateBinder(Hashtable objectTypes, IPredicate predicate, int termLocation)
        {
            List <IPredicate> predicateList = new List <IPredicate>();

            if (termLocation >= predicate.Terms.Count)
            {
                return new List <IPredicate> {
                           predicate
                }
            }
            ;

            if (!objectTypes.ContainsKey(predicate.TermAt(termLocation).Type))
            {
                return(new List <IPredicate>());
            }

            foreach (string obj in objectTypes[predicate.TermAt(termLocation).Type] as List <string> )
            {
                Predicate newPredicate = predicate.Clone() as Predicate;
                newPredicate.BindTerm(obj, termLocation);
                predicateList.AddRange(PredicateBinder(objectTypes, newPredicate, termLocation + 1));
            }

            return(predicateList);
        }
Exemple #2
0
 // Check to see if a predicate is true in the current state.
 public bool InState(IPredicate predicate)
 {
     if (predicate.Sign)
     {
         if (table.ContainsKey(predicate))
         {
             return((bool)table[predicate]);
         }
         else
         {
             return(false);
         }
     }
     else
     {
         Predicate reversed = predicate.Clone() as Predicate;
         reversed.Sign = true;
         if (table.ContainsKey(reversed))
         {
             return(!(bool)table[reversed]);
         }
         else
         {
             return(true);
         }
     }
 }
Exemple #3
0
        public OpenCondition Clone()
        {
            var oc = new OpenCondition(precondition.Clone() as IPredicate, step.Clone() as IPlanStep)
            {
                risks    = risks,
                isInit   = isInit,
                isStatic = isStatic,
                cndts    = cndts
            };

            return(oc);
        }
        public OpenCondition Clone()
        {
            var oc = new OpenCondition(precondition.Clone() as IPredicate, step.Clone() as IPlanStep)
            {
                risks             = risks,
                isInit            = isInit,
                isStatic          = isStatic,
                cndts             = cndts,
                addReuseHeuristic = addReuseHeuristic,
                hasDummyInit      = hasDummyInit,
                isDummyGoal       = isDummyGoal
            };

            return(oc);
        }
Exemple #5
0
        // Returns a bound copy of the predicate.
        public Predicate GetBoundPredicate()
        {
            Predicate boundPred = (Predicate)predicate.Clone();

            return(boundPred);
        }