Specifying Systems- BoundedFIFO error- Figure 4.2

32 views
Skip to first unread message

Anand Kumar

unread,
Sep 1, 2022, 12:28:32 AM9/1/22
to tlaplus
Hi,

"The configuration file did not specify the initial state predicate.

Can also be caused by trying to run TLC on a specification from

a module imported with a parameterized INSTANCE statement."

This is my spec, what am I doing wrong? Similar error comes in the FIFO spec lso. I have checked your earlier answer, but that doesn;t seem to provide a solution. I understand the Professor Lamport prefers us to use the Hyperbook, but that gives a lot fo permission errors etc on a mac.

Sorry to trouble you with this-- but since i am new to this I would really appreciate the help.

EXTENDS Naturals, Sequences

CONSTANT Message,N

VARIABLES in, out


ASSUME (N \in Nat) /\ (N > 0 )


Inner(q) == INSTANCE InnerFIFO


BNext(q) == 

            /\ Inner(q)! Next

            /\ Inner(q)! BufReceive => (Len(q) < N )


Spec == \E q: Inner(q)!Init /\ [][BNext(q)]_<<in,out,q>>

Stephan Merz

unread,
Sep 1, 2022, 2:35:16 AM9/1/22
to tla...@googlegroups.com
Hello,

TLC cannot handle specifications that involve unbounded quantification or quantification over state variables. In your case, `q' is a state variable and Spec should really be defined as

Spec == \EE q: Inner(q)!Init /\ [][BNext(q)]_<<in,out,q>>

where \EE denotes quantification over a state variable (i.e., a sequence of values). Such specifications are not handled by any of the existing verification tools for TLA+.

Regards,
Stephan

--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tlaplus/eb83eb50-5e91-4330-9e1b-9999a530e268n%40googlegroups.com.

Anand Kumar

unread,
Sep 1, 2022, 8:27:15 AM9/1/22
to tla...@googlegroups.com
What is your recommendation, then? should I continue with 'Specifying systems" or use the examples in the Hyperbook to learn this? Most of these examples don't seem to work--  Even the Channel example ends up in a deadlock  ( I mean in the 'Specifying systems book).



You received this message because you are subscribed to a topic in the Google Groups "tlaplus" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tlaplus/aASP2cDy1-c/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tlaplus+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tlaplus/7C62B09E-48AE-4447-B935-BC6C0EB403F3%40gmail.com.


--
(Please read my books, if you like programming: 

Listen to my music:
Thank you)


Stephan Merz

unread,
Sep 1, 2022, 8:34:58 AM9/1/22
to tla...@googlegroups.com
Please note that Specifying Systems introduces the language TLA+, a priori without consideration for TLC, which is restricted to a subset of TLA+, as explained in the corresponding chapter.

I'd suggest using the examples used in the video course. There is also a collection of TLA+ specifications available on GitHub [1]. In particular, [2] is a collection of specs from Specifying Systems that can be checked with TLC.

Regards,
Stephan

Anand Kumar

unread,
Sep 1, 2022, 9:47:04 AM9/1/22
to tla...@googlegroups.com
Thank you very much for your prompt reply.

Reply all
Reply to author
Forward
0 new messages