/// <summary>
        /// Removes rigid relations from the specified conditions.
        /// </summary>
        /// <param name="conditions">Conditions.</param>
        /// <returns>Conditions without rigid relations.</returns>
        private Conditions ClearRigidRelations(Conditions conditions)
        {
            Conditions newConditions = conditions.CloneEmpty();

            foreach (var expression in conditions)
            {
                PredicateExpression predicate = expression as PredicateExpression;
                if (predicate != null)
                {
                    if (EvaluationManager.IsPredicateRigidRelation(predicate.PredicateAtom))
                    {
                        continue;
                    }
                }
                newConditions.Add(expression);
            }

            return(newConditions);
        }
Example #2
0
 /// <summary>
 /// Visits the expression.
 /// </summary>
 /// <param name="expression">Expression.</param>
 public void Visit(PredicateExpression expression)
 {
     ExtractParameters(expression.PredicateAtom);
 }
 /// <summary>
 /// Visits and transforms the expression.
 /// </summary>
 /// <param name="expression">Source expression.</param>
 /// <returns>Transformed expression.</returns>
 public IExpression Visit(PredicateExpression expression)
 {
     return(new PredicateExpression(GroundAtom(expression.PredicateAtom), IdManager));
 }
Example #4
0
 /// <summary>
 /// Constructs the literal from the given expression.
 /// </summary>
 /// <param name="expression">Source expression.</param>
 /// <param name="isNegated">Is the literal negated?</param>
 public PredicateLiteralCNF(PredicateExpression expression, bool isNegated)
 {
     PredicateAtom = expression.PredicateAtom;
     IsNegated = isNegated;
     IdManager = expression.IdManager;
 }
Example #5
0
 /// <summary>
 /// Visits and performs a property count on predicate expression.
 /// </summary>
 /// <param name="expression">Predicate expression.</param>
 /// <returns>Tuple (property satisfied count, property not satisfied count).</returns>
 public Tuple <int, int> Visit(PredicateExpression expression)
 {
     return(ProcessPrimitiveExpression(expression));
 }
 /// <summary>
 /// Visits the expression.
 /// </summary>
 /// <param name="expression">Expression.</param>
 public override void Visit(PredicateExpression expression)
 {
     Stack.Push(new PredicateLiteralCNF(expression, IsNegated));
 }
        /// <summary>
        /// Visits and evaluates predicate expression.
        /// </summary>
        /// <param name="expression">Predicate expression.</param>
        /// <returns>True if the specified expression evaluates as true, false otherwise.</returns>
        public bool Visit(PredicateExpression expression)
        {
            IAtom groundedPredicateAtom = GroundingManager.GroundAtomDeep(expression.PredicateAtom, Substitution, ReferenceState);

            return(RigidRelations.Contains(groundedPredicateAtom) || ReferenceState.HasPredicate(groundedPredicateAtom));
        }