@Override public StartTimerAction applySubst(Substitution substitution) { // Apply substitution to parameters. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term term : getParameters()) { parameters.add(term.applySubst(substitution)); } // Create new action with instantiated parameters. return new StartTimerAction(parameters, getSourceInfo()); } }
@Override public CancelTimerAction applySubst(Substitution substitution) { // Apply substitution to parameters. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term term : getParameters()) { parameters.add(term.applySubst(substitution)); } // Create new action with instantiated parameters. return new CancelTimerAction(parameters, getSourceInfo()); } }
@Override public UnsubscribeAction applySubst(Substitution substitution) { // Apply substitution to parameters. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term term : getParameters()) { parameters.add(term.applySubst(substitution)); } // Create new action with instantiated parameters. return new UnsubscribeAction(parameters, getSourceInfo()); } }
@Override public SubscribeAction applySubst(Substitution substitution) { // Apply substitution to parameters. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term term : getParameters()) { parameters.add(term.applySubst(substitution)); } // Create new action with instantiated parameters. return new SubscribeAction(parameters, getSourceInfo()); } }
@Override public LogAction applySubst(Substitution substitution) { // Apply substitution to parameters. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term term : getParameters()) { parameters.add(term.applySubst(substitution)); } // Create new action with instantiated parameters. return new LogAction(parameters, getSourceInfo()); } }
@Override public PrintAction applySubst(Substitution substitution) { // Apply substitution to parameters. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term term : getParameters()) { parameters.add(term.applySubst(substitution)); } // Create new action with instantiated parameters. return new PrintAction(parameters, getSourceInfo()); } }
@Override public Action<?> applySubst(Substitution substitution) { // Apply substitution to action parameters. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term parameter : getParameters()) { parameters.add(parameter.applySubst(substitution)); } return new UserSpecOrModuleCall(getName(), parameters, getSourceInfo()); } }
@Override public SleepAction applySubst(Substitution substitution) { return new SleepAction((getParameters() == null || getParameters().isEmpty()) ? null : getParameters().get(0).applySubst(substitution), getSourceInfo()); } }
/** * Applies the substitution to the parameters of this action and to the target * module associated with the action. Assumes a target module has been * associated with this action. * * @return Instantiated module call action, where free variables in parameters * have been substituted with terms from the substitution. */ @Override public Action<Term> applySubst(Substitution substitution) { // Apply substitution to parameters. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term term : getParameters()) { parameters.add(term.applySubst(substitution)); } // Create new focus action with instantiated parameters. return new ModuleCallAction(getTarget(), parameters, getSourceInfo()); }
/** * Applies a {@link Substitution} to this {@link Selector} and returns a new * instantiated selector. * * @param substitution * A substitution. * @return Selector with same type as this one where parameters have been * instantiated by applying the substitution. No effect if selector has * no parameters. */ public Selector applySubst(Substitution substitution) { if (getType() == SelectorType.PARAMETERLIST || getType() == SelectorType.VARIABLE) { List<Term> terms = new ArrayList<>(getParameters().size()); for (Term term : getParameters()) { terms.add(term.applySubst(substitution)); } return new Selector(terms, getSourceInfo()); } else { return this; } }
/** * Applies the substitution to the parameters of this action and to the * target module associated with the action. Assumes a target module has * been associated with this action. * * @return Instantiated module call action, where free variables in * parameters have been substituted with terms from the * substitution. */ @Override public Action<Term> applySubst(Substitution substitution) { // Apply substitution to parameters. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term term : getParameters()) { parameters.add(term.applySubst(substitution)); } // Create new focus action with instantiated parameters. return new UserSpecCallAction((getSpecification() == null) ? null : getSpecification().applySubst(substitution), parameters, getSourceInfo()); }
@Override public PrologCompoundImpl applySubst(Substitution s) { Term[] instantiatedArgs = new Term[getArity()]; // Recursively apply the substitution to all sub-terms. for (int i = 0; i < getArity(); ++i) { instantiatedArgs[i] = getArg(i).applySubst(s); } return new PrologCompoundImpl(getName(), instantiatedArgs, this.info); }
/** * Applies a substitution to this macro. * <p> * If the substitution applied instantiates instead of only renames formal * parameters of this macro, then the resulting macro may have a different * number of formal parameters. For example, applying {X/f(Y,Z)} to a macro with * one formal parameter X will return a new macro with two formal parameters Y * and Z. * </p> * * @return A version of this macro where variables have been renamed. */ @Override public Macro applySubst(Substitution substitution) { List<Term> parameters = new LinkedList<>(); for (Term term : getParameters()) { Term instantiatedTerm = term.applySubst(substitution); parameters.addAll(instantiatedTerm.getFreeVar()); } return new Macro(getName(), parameters, (getDefinition() == null) ? null : getDefinition().applySubst(substitution), getSourceInfo()); }
@Override public UserSpecAction applySubst(Substitution substitution) { // Apply substitution to action parameters, pre- and post-condition. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term parameter : getParameters()) { parameters.add(parameter.applySubst(substitution)); } ActionPreCondition precondition = (getFullPreCondition() == null) ? null : getFullPreCondition().applySubst(substitution); ActionPostCondition positivePostcondition = (getPositivePostcondition() == null) ? null : getPositivePostcondition().applySubst(substitution); ActionPostCondition negativePostcondition = (getNegativePostcondition() == null) ? null : getNegativePostcondition().applySubst(substitution); return new UserSpecAction(getName(), parameters, isExternal(), precondition, positivePostcondition, negativePostcondition, getSourceInfo()); }
Term term = substitution.get(var).applySubst(substitution); if (!var.equals(term)) { combination.addBinding(var, term);