Used for OCL Simplification, i.e. not for usual logic terms.
The operators in this package
makes it possible to build OCL expressions in the form of
{@link de.uka.ilkd.key.logic.Term}s, with the ultimate goal of
applying simplification taclets to these {@link de.uka.ilkd.key.logic.Term}s
and then pretty-print the simplified expressions back to usual
OCL syntax again.
Most of the pre-defined OCL operations can be expressed using
{@link de.uka.ilkd.key.logic.op.Function}, but some of them
need more complex operators. These more complex
operators are collected in this package. There is also in this
package a class {@link de.uka.ilkd.key.logic.op.oclop.OclOp} containing
all pre-defined OCL operations, also the ones based on
{@link de.uka.ilkd.key.logic.op.Function}, in form of constants.
The operators defined in this package all extend
{@link de.uka.ilkd.key.logic.op.TermSymbol}.
One thing that makes {@link de.uka.ilkd.key.logic.op.Function}
inappropriate to use for some OCL operations is the fact
that it assumes that the type/sort of a term is only dependent
on its top-level operator, while in OCL the type of an
expression can also depend on its sub expressions. For example:
collection->iterate(elem ; acc:T=init_expr | expr_with_elem_and_acc)
The type of this expression is determined by the type of the
accumulator acc.
Last modified: Thu Jan 27 10:13:36 MET 2005
|