result);
/**
* This returns the set of positively provided variables at the current temporal levels.
* This function is defined as:
providesPos( phi /\ psi ) = providesPos( phi ) join providesPos( psi )
providesPos( phi \/ psi ) = providesPos( phi ) intersect providesPos( psi )
providesPos( phi R psi ) = providesPos( (psi /\ phi) \/ (psi /\ X(phi R psi)) )
= providesPos( psi )
providesPos( phi U psi ) = providesPos( psi \/ (phi /\ X(phi U psi) )
= providesPos( psi ) intersect providesPos( phi )
providesPos( X phi ) = emptyset
providesPos( !prop ) = emptyset
providesPos( prop ) = provided variables of prop
* @param result The result will be placed here.
*/
public void providesPos(Set result);
/**
* This returns the set of negatively provided variables at the current temporal levels.
* This function is defined as:
providesNeg( phi /\ psi ) = providesNeg( phi ) intersect providesNeg( psi )
providesNeg( phi \/ psi ) = providesNeg( phi ) join providesNeg( psi )
providesNeg( phi R psi ) = providesNeg( psi ) intersect providesNeg( phi )
providesNeg( phi U psi ) = providesNeg( psi )
providesNeg( X phi ) = emptyset
providesNeg( !prop ) = provided variables of prop
providesNeg( prop ) = emptyset
* @param result The result will be placed here.
*/
public void providesNeg(Set result);
/**
* This returns the set of required variables. This is the set of all variables which are free
* in propositions, meaning they occur in an if-pointcut but are not provided by the same
* pointcut at the same time.
* @param result The result will be placed here.
*/
public void requires(Set result);
//TODO refactor: visitors
/**
* Validates a formula for consistent bindings. Bindings are consistent, when at each point in time,
* the set of povided variables can be guaranteed to be a superset of the set of required variables.
* @throws ValidationException Thrown if a variable is unbound.
* @see #provides(Set)
* @see #requires(Set)
* @see ValidationException#IAFAState.ValidationException(String, IAFAState)
*/
public void validate() throws ValidationException;
}