Hello, I'm having trouble running TLC. I'm using the latest version of the tla tools without the toolbox (just using a terminal on linux).
Here is a simplified version of my setup:
-
I defined two modules, NoCrash and Library, as follows (in two different files):
------------------------ MODULE NoCrash ------------------------
EXTENDS Library
CONSTANTS X
VARIABLES y
-----------------------------------
Init == y = TRUE
Z == {h \in MySeqs : \E p \in X : TRUE}
Next == Z = TRUE
==============================
------------------------------- MODULE Library -------------------------------
CONSTANT MySeqs
=====================================
In order to use TLC I then defined module MCNoCrash as follows:
-------------------- MODULE MCNoCrash --------------------------------
EXTENDS Library
CONSTANT X
BS == [{1} -> {1}]
VARIABLE y
I == INSTANCE NoCrash
Next == I!Next
Init == I!Init
============================
And the following configuration file:
INIT Init
NEXT Next
CONSTANTS
X = {}
MySeqs <- BS
When running TLC with the command "java -cp ~/tla/tla/ tlc2/TLC MCNoCrash.tla", I get the following output:
-
Computing initial states...
Finished computing initial states: 1 distinct state generated.
Error: In evaluation, the identifier X is either undefined or not an operator.
-
TLC says the error appeared while evaluating the expression "{h \in MySeqs : \E p \in X : TRUE}"
-
Although my setup is a bit silly I think I shouldn't get this error. For example if I set BS to the empty set instead of [{1} -> {1}] in module MCNoCrash the error disappears. It also disappears if I replace Z by its definition when defining Next in module NoCrash.
Is this a bug or am I doing something wrong?
I also get the same error in another situation involving instantiation.
-
Thanks for reading my message,
Giuliano
