/// <summary> /// Auxiliary function for transforming the argument sub-expression of a quantified expression. The expression is grounded /// by all possible substitutions and each of the resulting expression is recursively transformed. /// </summary> /// <param name="parameters">Quantified expression parameters.</param> /// <param name="expression">Argument sub-expression of the quantified expression.</param> /// <returns>List of all possible grounded and transformed sub-expressions.</returns> private List <IExpression> TransformQuantifiedSubExpression(Parameters parameters, IExpression expression) { List <IExpression> arguments = new List <IExpression>(); IEnumerable <ISubstitution> localSubstitutions = GroundingManager.GenerateAllLocalSubstitutions(parameters); foreach (var localSubstitution in localSubstitutions) { var groundedSubExpression = GroundingManager.GroundExpression(expression, localSubstitution); arguments.Add(groundedSubExpression.Accept(this)); } return(arguments); }