BindingExpressionNodeIF.java

package edu.udel.cis.vsl.tass.ast.IF.expression;

import edu.udel.cis.vsl.tass.ast.IF.declaration.BoundVariableDeclarationNodeIF;

/** General quantified expressions. */
public interface BindingExpressionNodeIF extends PureExpressionNodeIF {

	public enum Quantifier {
		FORALL, EXISTS, LAMBDA, UNIFORM, SUM
	};

	/** The quantifier type for this binding expression. */
	Quantifier quantifier();

	/** Variable that is bound by the quantifier. */
	BoundVariableDeclarationNodeIF boundVariable();

	/** Constraint on the possible values of the bound variable. */
	PureExpressionNodeIF constraint();

	/** Quantified expression. */
	PureExpressionNodeIF expression();

	/** Set the quantifier type for this binding expression. */
	void setQuantifier(Quantifier quantifier);

	/** Set the variable that is bound by the quantifier. */
	void setBoundVariable(BoundVariableDeclarationNodeIF boundVariable);

	/** Set the constraint on the possible values of the bound variable. */
	void setConstraint(PureExpressionNodeIF constraint);

	/** Set the quantified expression. */
	void setExpression(PureExpressionNodeIF expression);
}