# Equation vs. Rule vs. Function

“What is the difference between an

`Equation`

, a`Rule`

and a`Function`

?”

All three are **algebraic expressions**, however:

- An
`Equation`

is an equality relation the simulator is expected to keep throughout simulation time. Thus whenever dependent symbols change the referred symbol (`symbol-ref`

) is recalculated. - A
`Rule`

is a recurrance relation rule available in`System`

, i.e. the expression may depend on the output symbol. All rules in a system are executed synchronously. The time-step of the system controls the frequency of the execution of the rule. - A
`Function`

is a parametric function definition that is calclulated whenever used (using`symbol()`

notation). For convenience, parameter-free functions are also accessible in plain`symbol`

notation.

Attribute | Evaluation | |
---|---|---|

`Equation` |
`symbol-ref` |
Evaluated whenever input symbols change and assigned to the referred symbol (e.g. `Property` ). |

`Rule` |
`symbol-ref` |
Evaluated with the `time-step` of the enclosing `System` and assigned to referred symbol. |

`Function` |
`symbol` |
Evaluated when symbol / function is used. |