Basically I'm looking for a "lowering" operator where:
Lower(x) == the level-0 _expression_ (constant value) which
is equal to x in this state
I can't think of any way to define such an operator, but it may help
to observe that if Foo is defined by
Foo(a, b) == a' = e1 /\ b' = e2
Then \E t : (t=x) /\ Foo(t,y)' is equivalent to Foo(x, y').
TLC's requirement that x' be determined in a single _expression_ means
that I can't write:
\A t \in DOMAIN x : x'[t] = e \* e is some _expression_
This is not a problem when only one variable is involved, as you can
do:
x' = [t \in DOMAIN x |-> e]
/\ x' = [t \in DOMAIN x |-> x'[t]]
/\ \A t \in DOMAIN x : x'[t] = e
but it's hardly simper than the second one.
it's not easy to realize that if x is a variable, then f[2] is not
equal to the illegal _expression_ (x')'.
Leslie