Expression evaluation model

Last modified 12 Mar 2021 10:22 +01:00

Let us define the expression evaluation more formally.

Sources

  1. Let we have n sources numbered 1, 2, …​, n.

  2. Each source can provide values of a given type. Let D1, D2, …​, Dn be domains for individual values for sources 1, 2, …​, n, respectively.

  3. Because each source can have multiple values of given type, the domains for sources 1, 2, …​, n are power sets (sets of sets) of D1, D2, …​, Dn, respectively, denoted as P(D1), P(D2), …​, P(Dn).

  4. And because each source has two states: old and new, the complete specification of input states can be denoted as P(D1) x P(D1), P(D2) x P(D2), …​, P(Dn) x P(Dn).

Output

  1. Let R be the domain for individual values of the target (output) item, i.e. evaluator range.

  2. P(R) is the power set of the evaluator range: all sets of individual values of the target item.

  3. P(R) x P(R) x P(R) is the set of all possible delta set triples (plus, minus, zero sets of values).

Transformation function (no deltas)

T: P(D1) x P(D2) x …​ x P(Dn) → P(R)

is the transformation function that maps sets of source values to a set of output values (no deltas yet).

Transformation function (with deltas)

Then the "delta-aware" transformation Trel i.e.:

Trel : P(D1) x P(D1) x P(D2) x P(D2) x …​ x P(Dn) x P(Dn) → P(R) x P(R) x P(R)

(in human words, a transformation function that maps couples (old, new) of sets of source values to the output delta set triple)

can be defined in this way:

  • let S1 ⊆ D1, S2 ⊆ D2, …​, Sn ⊆ Dn be sets of old values of sources 1, 2, …​, n, respectively;

  • let S1' ⊆ D1, S2' ⊆ D2, …​, Sn' ⊆ Dn be sets of new values of sources 1, 2, …​, n, respectively;

  • let O ⊆ R is the set of output values for the "old" state, i.e. O = T(S1, S2, …​, Sn);

  • let O' ⊆ R is the set of output values for the "new" state, i.e. O' = T(S1', S2', …​, Sn');

  • let (Oplus ⊆ R, Ominus ⊆ R, Ozero ⊆ R) be resulting delta set triple.

Then

Trel (S1, S1', S2, S2', …​, Sn, Sn') = (Oplus, Ominus, Ozero)

if and only if:

  • Oplus = O' - O

  • Ominus = O - O'

  • Ozero = O ∩ O'

Note that this description ignores the existence of variables. It is rather complicated even without them. If you’re interested how variables are treated, please see the description of the implementation.

Was this page helpful?
YES NO
Thanks for your feedback