Relations and logical relations allow you to state equalities (equations) and relationships inequalities among the variables and constants in you models.
WHEN statements allow you to state relationships among the models and equations which depend on the values of variables in those models. Sets and symbols are not allowed in real or logical relations except when used as array subscripts.
Real relations relate the values of real atoms, real constants, and integer constants. Real relations cannot contain boolean constants and atoms, nor can they contain integer atoms.
Logical relations relate the values of boolean atoms and boolean constants. The SATISFIED operator makes it possible to include real relations in a logical relation. Neither integer atoms and constants nor real atoms and constants are allowed in logical relations. If you find yourself trying to write an equation with integer atoms, you are really creating a conditional model for which you should use the WHEN statement instead. See Conditional modelling to learn about how ASCEND represents this kind of mathematical model. There are also a real variable types, solver_integer and solver_binary, which are used to formulate equations when the solver is expected to initially treat the variable as a real value but drive it to an integer or 0-1 value at the solution. The integer programming features of ASCEND are described in a technical report by Craig Schmidt not yet available electronically. See system.a4l for elementary details. Like atoms, real and logical relations may have attributes, subatomic particles for use by ASCEND clients and users. The name of a relation can be used in writing logical relations and WHEN statements. WHEN statements are outside the scope of this chapter; please see Conditional modelling for the details.