<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="bbPress/1.0.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>TLA+ &#124; The way to specify &#187; Recent Posts</title>
		<link>http://bbpress.tlaplus.net/</link>
		<description>The TLA+ and PlusCal Resource</description>
		<language>en-US</language>
		<pubDate>Wed, 22 Feb 2012 23:41:34 +0000</pubDate>
		<generator>http://bbpress.org/?v=1.0.2</generator>
		<textInput>
			<title><![CDATA[Search]]></title>
			<description><![CDATA[Search all topics from these forums.]]></description>
			<name>q</name>
			<link>http://bbpress.tlaplus.net/search.php</link>
		</textInput>
		<atom:link href="http://bbpress.tlaplus.net/rss/" rel="self" type="application/rss+xml" />

		<item>
			<title>CharpoV on "Still the same old bug"</title>
			<link>http://bbpress.tlaplus.net/topic/still-the-same-old-bug#post-171</link>
			<pubDate>Sun, 12 Feb 2012 00:12:37 +0000</pubDate>
			<dc:creator>CharpoV</dc:creator>
			<guid isPermaLink="false">171@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;No, I didn't know there was such a place.  Leslie is aware of the bug, which has been around forever.  I was just hoping it had been fixed at some point.&#60;/p&#62;
&#60;p&#62;MC
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Daniel Ricketts on "Still the same old bug"</title>
			<link>http://bbpress.tlaplus.net/topic/still-the-same-old-bug#post-170</link>
			<pubDate>Sat, 11 Feb 2012 23:24:37 +0000</pubDate>
			<dc:creator>Daniel Ricketts</dc:creator>
			<guid isPermaLink="false">170@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;You're absolutely right. Sorry about that. I was able to reproduce this bug in the Toolbox. Have you reported the bug at bugzilla.tlaplus.net ?
&#60;/p&#62;</description>
		</item>
		<item>
			<title>CharpoV on "Still the same old bug"</title>
			<link>http://bbpress.tlaplus.net/topic/still-the-same-old-bug#post-169</link>
			<pubDate>Sat, 11 Feb 2012 22:01:10 +0000</pubDate>
			<dc:creator>CharpoV</dc:creator>
			<guid isPermaLink="false">169@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;No, it was not.  The output in that case would have been:&#60;br /&#62;
&#60;code&#62;&#60;br /&#62;
Error: Deadlock reached.&#60;br /&#62;
Error: The behavior up to this point is:&#60;br /&#62;
...&#60;br /&#62;
&#60;/code&#62;&#60;br /&#62;
I had deadlock checking disabled, and the output from TLC was:&#60;br /&#62;
&#60;code&#62;&#60;br /&#62;
Checking temporal properties for the complete state space...&#60;br /&#62;
Error: Temporal properties were violated.&#60;br /&#62;
...&#60;br /&#62;
&#60;/code&#62;&#60;br /&#62;
where 'temporal properties' refers to Xshrinks.&#60;/p&#62;
&#60;p&#62;MC
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Daniel Ricketts on "Still the same old bug"</title>
			<link>http://bbpress.tlaplus.net/topic/still-the-same-old-bug#post-168</link>
			<pubDate>Sat, 11 Feb 2012 21:52:10 +0000</pubDate>
			<dc:creator>Daniel Ricketts</dc:creator>
			<guid isPermaLink="false">168@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;TLC also, by default, checks for absence of deadlock. The trace returned by TLC was not a counter example to P~&#38;gt; Q. It was a counter example to absence of deadlock.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>CharpoV on "Still the same old bug"</title>
			<link>http://bbpress.tlaplus.net/topic/still-the-same-old-bug#post-167</link>
			<pubDate>Sat, 11 Feb 2012 21:45:07 +0000</pubDate>
			<dc:creator>CharpoV</dc:creator>
			<guid isPermaLink="false">167@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;A counterexample to P ~&#38;gt; Q must be a trace in which a P state is followed by an infinite sequence of non-Q states.  The counterexample produced by TLC is not valid because the trace has no P state.&#60;/p&#62;
&#60;p&#62;MC
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Daniel Ricketts on "Still the same old bug"</title>
			<link>http://bbpress.tlaplus.net/topic/still-the-same-old-bug#post-166</link>
			<pubDate>Sat, 11 Feb 2012 21:11:09 +0000</pubDate>
			<dc:creator>Daniel Ricketts</dc:creator>
			<guid isPermaLink="false">166@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;I don't believe that this is a bug. The trace given by TLC is a valid counterexample to deadlock-free execution. In state 4 of the trace, neither A nor B is enabled, so the system deadlocks.&#60;/p&#62;
&#60;p&#62;If you use the Toolbox, it's easy to see if you've disabled deadlock checking. You can also evaluate arbitrary expressions at all states of a trace to check, for example, if the next state actions are enabled.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>CharpoV on "Still the same old bug"</title>
			<link>http://bbpress.tlaplus.net/topic/still-the-same-old-bug#post-165</link>
			<pubDate>Tue, 07 Feb 2012 20:48:32 +0000</pubDate>
			<dc:creator>CharpoV</dc:creator>
			<guid isPermaLink="false">165@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;This old bug is getting to be really annoying, especially now that it shows up even in the simplest examples I use in a class I'm teaching on TLA/TLC (and severely undermines my message on the beauty of model-checking).  Is there a version of TLC in which the bug has been fixed (I'm using the command-line tools, not the fancy toolbox)?  Will it ever be fixed?  How is it that I seem to be the only user who gets into this problem with astounding regularity?&#60;/p&#62;
&#60;p&#62;Below is a small module that exhibits the problem.  The trace produced by TLC is clearly not a valid counterexample to the leads-to.&#60;/p&#62;
&#60;p&#62;MC&#60;/p&#62;
&#60;p&#62;Module:&#60;br /&#62;
&#60;code&#62;&#60;br /&#62;
-------------------- MODULE X --------------------&#60;br /&#62;
EXTENDS Naturals&#60;/p&#62;
&#60;p&#62;VARIABLES x, b&#60;/p&#62;
&#60;p&#62;A ==&#60;br /&#62;
  /\ x &#38;lt; 5&#60;br /&#62;
  /\ b&#60;br /&#62;
  /\ b' = ~b&#60;br /&#62;
  /\ UNCHANGED x&#60;/p&#62;
&#60;p&#62;B ==&#60;br /&#62;
  /\ ~b&#60;br /&#62;
  /\ b' = ~b&#60;br /&#62;
  /\ x' = x + 1&#60;/p&#62;
&#60;p&#62;Init == x \in 0..3 /\ b \in BOOLEAN&#60;/p&#62;
&#60;p&#62;Prog == Init /\ [][A \/ B]_&#38;lt;&#38;lt;x, b&#38;gt;&#38;gt; /\ WF_&#38;lt;&#38;lt;x, b&#38;gt;&#38;gt;(A \/ B)&#60;/p&#62;
&#60;p&#62;--------------------------------------------------------------------------------&#60;br /&#62;
Xshrinks == x=2 ~&#38;gt; x=1&#60;br /&#62;
================================================================================&#60;br /&#62;
&#60;/code&#62;&#60;/p&#62;
&#60;p&#62;Trace:&#60;br /&#62;
&#60;code&#62;&#60;/p&#62;
&#60;p&#62;State 1: &#38;lt;Initial predicate&#38;gt;&#60;br /&#62;
/\ b = FALSE&#60;br /&#62;
/\ x = 3&#60;/p&#62;
&#60;p&#62;State 2: &#38;lt;Action line 13, col 3 to line 15, col 15 of module X&#38;gt;&#60;br /&#62;
/\ b = TRUE&#60;br /&#62;
/\ x = 4&#60;/p&#62;
&#60;p&#62;State 3: &#38;lt;Action line 7, col 3 to line 10, col 16 of module X&#38;gt;&#60;br /&#62;
/\ b = FALSE&#60;br /&#62;
/\ x = 4&#60;/p&#62;
&#60;p&#62;State 4: &#38;lt;Action line 13, col 3 to line 15, col 15 of module X&#38;gt;&#60;br /&#62;
/\ b = TRUE&#60;br /&#62;
/\ x = 5&#60;/p&#62;
&#60;p&#62;State 5: Stuttering&#60;br /&#62;
&#60;/code&#62;
&#60;/p&#62;</description>
		</item>
		<item>
			<title>groban on "Hi - Newbee Question"</title>
			<link>http://bbpress.tlaplus.net/topic/hi-newbee-question#post-164</link>
			<pubDate>Fri, 20 Jan 2012 09:47:22 +0000</pubDate>
			<dc:creator>groban</dc:creator>
			<guid isPermaLink="false">164@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;First of all I want to thank you for your time. I will try express better my questions. &#60;/p&#62;
&#60;p&#62;Question 1.&#60;br /&#62;
In the HourClock example I deliberately modify the statement&#60;br /&#62;
HCnxt == IF hr' # 12 THEN hr+1 ELSE 1&#60;br /&#62;
to the false statement&#60;br /&#62;
HCnxt == IF hr' # 14 THEN hr+1 ELSE 1&#60;br /&#62;
in order to permit variable hr to take values 12,13 and see how the toolbox react and discover that the theorem&#60;br /&#62;
HC =&#38;gt; []HCini&#60;br /&#62;
does not longer exist. However, I run the model and I see no difference from the previous example without the modification.&#60;/p&#62;
&#60;p&#62;Question 2.&#60;br /&#62;
This question concerns the toolbox operation.  I open toolbox and add the HourClock spec. I right click on the spec and select “Launch Prover…”. I click OK in the next window and an alert message appears saying that “Prover Launch has encountered a problem. The given Cygwin path c:/Cygwin/bin does not exist”&#60;br /&#62;
My question is. I should install Cygwin in order to operate the prove tools included in toolbox?&#60;/p&#62;
&#60;p&#62;Finally, as new in TLA and toolbox I believe that it will be very helpful if there is tutorial (with a specific example-code) on how to write and prove a spec with toolbox (including error explanation etc)&#60;/p&#62;
&#60;p&#62;Thank you again!
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "Hi - Newbee Question"</title>
			<link>http://bbpress.tlaplus.net/topic/hi-newbee-question#post-163</link>
			<pubDate>Thu, 19 Jan 2012 21:43:35 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">163@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;I'm sorry that my reply was hard to read.  Let's see if I can get this to be formatted in a reasonable way.&#60;br /&#62;
&#60;code&#62;&#60;br /&#62;
I'm afraid I don't know what you're trying to do. The definition&#60;/p&#62;
&#60;p&#62;   HCnxt == IF hr' # 14 THEN hr+1 ELSE 1&#60;/p&#62;
&#60;p&#62;makes no sense if HCnxt is supposed to be the next-state action. A formula should assert a meaningful sentence. For example, 2+2=4 says &#34;two plus two equals four&#34;. Your definition of HCnxt is a formula that says&#60;/p&#62;
&#60;p&#62;If the value of hr in the next state does not equal 14, then the value&#60;br /&#62;
of hr plus 1, else 1.&#60;/p&#62;
&#60;p&#62;That is not a meaningful sentence.&#60;/p&#62;
&#60;p&#62;If we are to figure out the problem you're having with the Toolbox, you will have to describe more precisely what you want to happen and exactly what you have done.&#60;br /&#62;
&#60;/code&#62;
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "Hi - Newbee Question"</title>
			<link>http://bbpress.tlaplus.net/topic/hi-newbee-question#post-162</link>
			<pubDate>Thu, 19 Jan 2012 21:41:04 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">162@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;I'm afraid I don't know what you're trying to do.  The definition&#60;/p&#62;
&#60;p&#62;   HCnxt == IF hr' # 14 THEN hr+1 ELSE 1&#60;/p&#62;
&#60;p&#62;makes no sense if HCnxt is supposed to be the next-state action.  A formula should assert a meaningful sentence.  For example, 2+2=4 says &#34;two plus two equals four&#34;.  Your definition of HCnxt is a formula that says&#60;/p&#62;
&#60;p&#62;   If the value of hr in the next state does not equal 14, then the value&#60;br /&#62;
   of hr plus 1, else 1.&#60;/p&#62;
&#60;p&#62;That is not a meaningful sentence.&#60;/p&#62;
&#60;p&#62;If we are to figure out the problem you're having with the Toolbox, you will have to describe more precisely what you want to happen and exactly what you have done.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>CharpoV on "(old) leads-to bug"</title>
			<link>http://bbpress.tlaplus.net/topic/old-leads-to-bug#post-161</link>
			<pubDate>Thu, 17 Nov 2011 23:56:04 +0000</pubDate>
			<dc:creator>CharpoV</dc:creator>
			<guid isPermaLink="false">161@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;I'm seing (again) a counterexample for a property of the form p ~&#38;gt; q in which the cycle of states is such that p is always false.  This is a longstanding bug (I can provide the module if needed).&#60;/p&#62;
&#60;p&#62;In my desperation, I tried to use the toolbox instead of the command-line tools (although it looks both use TLC2 Version 2.03 of 20 July 2011).  What I get then is &#34;java.io.EOFException&#34;.&#60;/p&#62;
&#60;p&#62;Also, is setting Java's class path to toolbox/plugins/org.lamport.tlatools_1.0.0.201109181126 equivalent to using the command-line tools?&#60;/p&#62;
&#60;p&#62;MC
&#60;/p&#62;</description>
		</item>
		<item>
			<title>CharpoV on "Feature request"</title>
			<link>http://bbpress.tlaplus.net/topic/feature-request#post-160</link>
			<pubDate>Thu, 17 Nov 2011 17:24:50 +0000</pubDate>
			<dc:creator>CharpoV</dc:creator>
			<guid isPermaLink="false">160@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;TLC won't let me use:&#60;/p&#62;
&#60;p&#62;\A &#38;lt;&#38;lt;x,y&#38;gt;&#38;gt; \in AllRouters, s \in Sides :&#60;br /&#62;
LET q == grid[x, y][s].in&#60;br /&#62;
IN  \/ q = &#38;lt;&#38;lt;&#38;gt;&#38;gt;&#60;br /&#62;
    \/ Head(q).header # &#38;lt;&#38;lt;x,y&#38;gt;&#38;gt;&#60;/p&#62;
&#60;p&#62;However, this ugly alternative works:&#60;br /&#62;
...&#60;br /&#62;
IN IF q = &#38;lt;&#38;lt;&#38;gt;&#38;gt; THEN TRUE ELSE Head(q).header # &#38;lt;&#38;lt;x,y&#38;gt;&#38;gt;&#60;/p&#62;
&#60;p&#62;Could TLC's evaluation of disjunctions be improved to avoid the problem?  Or is there a non-ugly alternative that I'm missing?&#60;/p&#62;
&#60;p&#62;(Note: I'm using the command-line tools, TLC2 Version 2.03 of 20 July 2011.)&#60;/p&#62;
&#60;p&#62;MC
&#60;/p&#62;</description>
		</item>
		<item>
			<title>hansen on "&#34;Successor state is not completely specified by the next-state action&#34; error"</title>
			<link>http://bbpress.tlaplus.net/topic/successor-state-is-not-completely-specified-by-the-next-state-action-error#post-159</link>
			<pubDate>Thu, 10 Nov 2011 14:18:54 +0000</pubDate>
			<dc:creator>hansen</dc:creator>
			<guid isPermaLink="false">159@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;The error is being caused by the precedence of the &#34;IF THEN ELSE&#34; construct. The &#34;ELSE&#34; clause has the lowest possible precedence and ends only after the &#34;UNCHANGED&#34; statement (see Specifying Systems, chapter 15.2.1: Undelimited Constructs). To fix the error you have to put the whole &#34;IF THEN ELSE&#34; construct in brackets: ... BootRom_state' =(IF BootRom_corrupt=0 THEN &#34;malicious&#34; ELSE &#34;good&#34;) /\ ...
&#60;/p&#62;</description>
		</item>
		<item>
			<title>sid_rao on "&#34;Successor state is not completely specified by the next-state action&#34; error"</title>
			<link>http://bbpress.tlaplus.net/topic/successor-state-is-not-completely-specified-by-the-next-state-action-error#post-158</link>
			<pubDate>Mon, 24 Oct 2011 17:10:35 +0000</pubDate>
			<dc:creator>sid_rao</dc:creator>
			<guid isPermaLink="false">158@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Hi, I have some experience with TLA+. Currently, I am writing a specification which gives the following error,&#60;br /&#62;
&#34;Error: Successor state is not completely specified by the next-state action.&#34;&#60;/p&#62;
&#60;p&#62;The transition function in the model which causes this error is,&#60;/p&#62;
&#60;p&#62;BootRomOp ==&#60;br /&#62;
             /\ pc = &#34;rom&#34;&#60;br /&#62;
	     /\ BootRom_state' = IF (BootRom_corrupt=0)&#60;br /&#62;
 			         THEN &#34;malicious&#34;&#60;br /&#62;
                                 ELSE &#34;good&#34;&#60;br /&#62;
	     /\ pc' = &#34;boot&#34;&#60;br /&#62;
             /\ UNCHANGED &#38;lt;&#38;lt;variables&#38;gt;&#38;gt;&#60;br /&#62;
---end---&#60;/p&#62;
&#60;p&#62;However, the error goes away and TLC completes successfully, if I remove the &#34;IF THEN ELSE&#34; construct from the above transition function, and reformulate the function as, for example,&#60;/p&#62;
&#60;p&#62;BootRomOp ==&#60;br /&#62;
             /\ pc = &#34;rom&#34;&#60;br /&#62;
	     /\ BootRom_state' = &#34;good&#34;&#60;br /&#62;
	     /\ pc' = &#34;boot&#34;&#60;br /&#62;
             /\ UNCHANGED &#38;lt;&#38;lt;variables&#38;gt;&#38;gt;&#60;br /&#62;
----end-----&#60;/p&#62;
&#60;p&#62;Can someone give me an insight into why I am getting the &#34;Successor state is not completely specified&#34; error?
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "TLA+ Specification"</title>
			<link>http://bbpress.tlaplus.net/topic/tla-specification#post-157</link>
			<pubDate>Mon, 26 Sep 2011 14:25:35 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">157@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;The first thing you should do is read about TLA and TLA+.  See the Documentation/Books page.  You will discover that TLA+ is not a programming language.  Perhaps you want PlusCal.&#60;/p&#62;
&#60;p&#62;1) PlusCal contains a print statement, but it's mostly for debugging.  You are more likely to want to check that, at some point in your PlusCal code, x = y!, for some variables x and y.  To do that, you would define Factorial in TLA+ and add the assertion x = Factorial(y).&#60;/p&#62;
&#60;p&#62;2) You just don't tell TLC to check any liveness property.&#60;/p&#62;
&#60;p&#62;Leslie Lamport
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Parul on "TLA+ Specification"</title>
			<link>http://bbpress.tlaplus.net/topic/tla-specification#post-156</link>
			<pubDate>Sun, 25 Sep 2011 19:51:07 +0000</pubDate>
			<dc:creator>Parul</dc:creator>
			<guid isPermaLink="false">156@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Hi,&#60;br /&#62;
I am new to TLA.I am exploring TLA+ tools and i am facing problems in this.I have following queries&#60;br /&#62;
1)I want to know how to get output for any code.suppose we write code for factorial program(in which we are calculating factorial of a number) so where we will get its output.&#60;br /&#62;
2)How to check a model with tlc when there is no liveness property?&#60;br /&#62;
Thanks in advance
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "Introduction to the Distributed TLC Forum"</title>
			<link>http://bbpress.tlaplus.net/topic/introduction-to-the-distributed-tlc-forum#post-155</link>
			<pubDate>Thu, 15 Sep 2011 11:39:01 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">155@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;The next release of the TLA+ Toolbox will allow TLC to run in distributed mode.  You will be able to execute a TLC run in parallel on dozens or hundreds of computers, potentially speeding up model checking by one or two orders of magnitude.  However, this will require automating the process of starting the workers, and we don't know how to do that on all the different operating systems and networks that people use.  The purpose of this forum is for users to share their experiences of running TLC in distributed mode, so we can all learn what works on what kinds of systems.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "Creating a Sequence from a Set?"</title>
			<link>http://bbpress.tlaplus.net/topic/creating-a-sequence-from-a-set#post-154</link>
			<pubDate>Thu, 15 Sep 2011 11:27:41 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">154@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Laven writes that his definition of ToSeq produces a sequence in the reverse order than that produced by Merz's definition.  What he should have written is that this was what he discovered when running the two definitions on a particular example on a particular version of TLC.  The semantics of TLA+ do not imply this, and what those definitions produce could depend on the particular version of the particular tool one is using.  If you want the elements in a certain order, you should define an operator that ensures that they are in that order--for example, one that sorts the sequence produced by either Laven's or Merz's definitiion.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>mkuppe on "Nullpointerexception"</title>
			<link>http://bbpress.tlaplus.net/topic/nullpointerexception#post-153</link>
			<pubDate>Thu, 15 Sep 2011 11:22:12 +0000</pubDate>
			<dc:creator>mkuppe</dc:creator>
			<guid isPermaLink="false">153@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Hi mkoconnor,&#60;/p&#62;
&#60;p&#62;what does the actual stack trace look like? Can you post it here?&#60;/p&#62;
&#60;p&#62;Since you are on Mac, you might be hit by bug #111 (&#60;a href=&#34;https://bugzilla.tlaplus.net/show_bug.cgi?id=111&#34; rel=&#34;nofollow&#34;&#62;https://bugzilla.tlaplus.net/show_bug.cgi?id=111&#60;/a&#62;) which is going to be fixed in the next Toolbox release.&#60;/p&#62;
&#60;p&#62;Markus
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Laven on "Nullpointerexception"</title>
			<link>http://bbpress.tlaplus.net/topic/nullpointerexception#post-152</link>
			<pubDate>Thu, 25 Aug 2011 08:46:09 +0000</pubDate>
			<dc:creator>Laven</dc:creator>
			<guid isPermaLink="false">152@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;I saw the same problem in Simulation mode, but not in Model-checking mode. But looks it doesn't affect the results.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Laven on "Creating a Sequence from a Set?"</title>
			<link>http://bbpress.tlaplus.net/topic/creating-a-sequence-from-a-set#post-151</link>
			<pubDate>Thu, 25 Aug 2011 08:43:50 +0000</pubDate>
			<dc:creator>Laven</dc:creator>
			<guid isPermaLink="false">151@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;I wrote it this way:&#60;br /&#62;
ToSeq(S) ==&#60;br /&#62;
    LET M == Cardinality(S)&#60;br /&#62;
    IN  CHOOSE x \in [1..M-&#38;gt;S]:Cardinality({x[n]:n \in (1..M)}) = M&#60;/p&#62;
&#60;p&#62;It creates a reverse order seq compare to merz's recursive solution.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>mkoconnor on "Nullpointerexception"</title>
			<link>http://bbpress.tlaplus.net/topic/nullpointerexception#post-150</link>
			<pubDate>Fri, 19 Aug 2011 09:18:18 +0000</pubDate>
			<dc:creator>mkoconnor</dc:creator>
			<guid isPermaLink="false">150@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;First of all, thanks for this!  It looks great.&#60;/p&#62;
&#60;p&#62;I get a Null Pointer exception every time I try to run TLC on any model (i.e., click the Green run model button).  I'm not sure what  all information you need, but I'm on a Mac and this is the toolbox version:&#60;/p&#62;
&#60;p&#62;This is Version 1.3.1 of 5 April 2011 and includes:&#60;br /&#62;
  - SANY Version 2.1 of 10 February 2011&#60;br /&#62;
  - TLC Version 2.03 of 26 May 2010&#60;br /&#62;
  - PlusCal Version 1.5 of 19 March 2011&#60;br /&#62;
  - TLATeX Version .9 of 19 September 2007&#60;/p&#62;
&#60;p&#62;and this is my machine and Java versions:&#60;/p&#62;
&#60;p&#62;$ uname -a&#60;br /&#62;
Darwin Michael-OConnors-MacBook-Pro.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun  7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386&#60;br /&#62;
$ java -version&#60;br /&#62;
java version &#34;1.6.0_26&#34;&#60;br /&#62;
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425)&#60;br /&#62;
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode)&#60;/p&#62;
&#60;p&#62;Thanks!
&#60;/p&#62;</description>
		</item>
		<item>
			<title>groban on "Hi - Newbee Question"</title>
			<link>http://bbpress.tlaplus.net/topic/hi-newbee-question#post-149</link>
			<pubDate>Sun, 10 Jul 2011 10:10:31 +0000</pubDate>
			<dc:creator>groban</dc:creator>
			<guid isPermaLink="false">149@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;I am trying to understand both TLA+ and toolbox. I am useing toolbox-64 on windows 7 prof 64bit. I am testing the hourclock example. ok.&#60;br /&#62;
I am changing HCnxt with the following&#60;/p&#62;
&#60;p&#62;'HCnxt == IF hr' # 14 THEN hr+1 ELSE 1'&#60;/p&#62;
&#60;p&#62;This change shouldn't make my theorem incorrect? I am running model checker and it founds no errors.&#60;/p&#62;
&#60;p&#62;Also in the model checker when i am clicking in the header of the column an empty new window with no state graph is presented.&#60;/p&#62;
&#60;p&#62;Finally, when i am trying to lanch model prover (with right click) it creates an error message that doesn't find c:/cygwin/bin. Does the toolbox needs cygwin pre-installed?&#60;/p&#62;
&#60;p&#62;Thanks for your time
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "Coming Soon: Parallel Execution of TLC on a Network"</title>
			<link>http://bbpress.tlaplus.net/topic/coming-soon-parallel-execution-of-tlc-on-a-network#post-148</link>
			<pubDate>Tue, 28 Jun 2011 10:39:24 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">148@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;We are going to enhance the Toolbox and the TLC model checker to&#60;br /&#62;
enable running TLC on a network of machines.  We hope this will&#60;br /&#62;
provide a speedup that is linear in the number of machines for dozens&#60;br /&#62;
and perhaps hundreds of machines.  Because of the variety of networks&#60;br /&#62;
that people might use, we cannot make it as easy to use TLC on a&#60;br /&#62;
network as on a single machine.  To try to make it reasonably easy for&#60;br /&#62;
must users, we would like to find out how this will be used.&#60;/p&#62;
&#60;p&#62;If you would be likely to use this feature, please let us know how you&#60;br /&#62;
would use it.  You can either post to this forum or send email to&#60;br /&#62;
Leslie Lamport (&#60;a href=&#34;http://lamport.org&#34;&#62;http://lamport.org&#60;/a&#62;) briefly&#60;br /&#62;
describing:&#60;/p&#62;
&#60;ul&#62;
&#60;li&#62; What operating system(s) you will be using.&#60;/li&#62;
&#60;li&#62; The network of computers you will be using, including its bandwidth,&#60;br /&#62;
  the number of machines and the kinds of machines (how many cores and&#60;br /&#62;
  how much memory they have).&#60;/li&#62;
&#60;li&#62; How the computer running the Toolbox will be connected to the&#60;br /&#62;
  network running TLC, and if it will be continuously connected&#60;br /&#62;
  to the network throughout a TLC run. &#60;/li&#62;
&#60;li&#62; If possible, the approximate number of distinct states generated&#60;br /&#62;
  by the models you would like to check.&#60;/li&#62;
&#60;/ul&#62;
&#60;p&#62;When run on a network, TLC will check only safety properties, not liveness&#60;br /&#62;
properties.  (The liveness-checking algorithm cannot easily be parallelized.)
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "Best way to define transitive closure as an operator for TLC?"</title>
			<link>http://bbpress.tlaplus.net/topic/best-way-to-define-transitive-closure-as-an-operator-for-tlc#post-147</link>
			<pubDate>Wed, 22 Jun 2011 07:56:12 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">147@http://bbpress.tlaplus.net/</guid>
			<description>&#60;pre&#62;&#60;code&#62;CORRECTION.  I did not meant to say that this web site is crappy.  I was
referring to the software used to create the web pages.  (I presume it was
the best free software available when the site was created.)  We are doing
the best we can to produce a good web site with this crappy software.
Please excuse us if we are slow to respond to postings.  There are few of
us and we are very busy.

  I have turned my comments above into a module showing a few ways to
define the transitive closure.  It will appear in the examples directory
in the next release of the TLA+ tools.&#60;/code&#62;&#60;/pre&#62;</description>
		</item>
		<item>
			<title>ajholanda on "Spec: Experiment using PID Controller"</title>
			<link>http://bbpress.tlaplus.net/topic/spec-experiment-using-pid-controller#post-146</link>
			<pubDate>Tue, 21 Jun 2011 18:41:19 +0000</pubDate>
			<dc:creator>ajholanda</dc:creator>
			<guid isPermaLink="false">146@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Dear All;&#60;/p&#62;
&#60;p&#62;I am specifying a program to control an physical experiment using TLA+. I think I have my first draft, but of course there is a large room to improvements. I've tried to split the chunks of the specification it is not reliable, but the result appeared very cryptic. So I'm posting the documentation link that contains the specification:&#60;/p&#62;
&#60;p&#62;&#60;a href=&#34;http://dcm.ffclrp.usp.br/~aholanda/pidcon/pidcon.pdf&#34; rel=&#34;nofollow&#34;&#62;http://dcm.ffclrp.usp.br/~aholanda/pidcon/pidcon.pdf&#60;/a&#62;&#60;/p&#62;
&#60;p&#62;Some doubts:&#60;br /&#62;
1. At page 8 the function &#34;DoPerodicMeasures&#34; is specified, but now that I am studying temporal formulas, it seems to me that I can use them to specify this function. But a doubt occurred to me, when I specify using temporal formulas, some instructions necessary to the implementation are &#34;coupled&#34; into the formulas, it maybe is good in the specification, but the implementation loose a guide.&#60;br /&#62;
2. I think I put a lot of implementation details, mainly in the &#34;CondutivityExperiment&#34; specification.&#60;br /&#62;
3. I have doubts if &#34;DeviceInterface&#34; is being a good abstraction for the devices.&#60;/p&#62;
&#60;p&#62;I have to apologize the draft state of the material, but I need some feedback to advance.&#60;br /&#62;
Any help are welcome.&#60;/p&#62;
&#60;p&#62;Thanks in advance;&#60;/p&#62;
&#60;p&#62;Regards;&#60;/p&#62;
&#60;p&#62;Adriano.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "Possible bug in TLC?"</title>
			<link>http://bbpress.tlaplus.net/topic/possible-bug-in-tlc#post-145</link>
			<pubDate>Tue, 21 Jun 2011 11:24:40 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">145@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;&#60;code&#62;Thanks for the report.  We will check it out.&#60;/code&#62;
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "Best way to define transitive closure as an operator for TLC?"</title>
			<link>http://bbpress.tlaplus.net/topic/best-way-to-define-transitive-closure-as-an-operator-for-tlc#post-144</link>
			<pubDate>Mon, 20 Jun 2011 17:47:32 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">144@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Sorry, I forgot that this crappy web site doesn't allow you to type readable posts.&#60;br /&#62;
To get a readable version, copy this posting into a sensible text editor and replace&#60;br /&#62;
every @ with a space.&#60;br /&#62;
@@@@@@&#60;br /&#62;
@@@@@@&#60;/p&#62;
&#60;p&#62;If R is a relation--that is a set of ordered pairs--let its support be&#60;br /&#62;
the set of all elements that appear in those pairs.  Then R defines a&#60;br /&#62;
directed graph on its support, where there is an edge from s to t iff&#60;br /&#62;
&#38;lt;&#38;lt;s, t&#38;gt;&#38;gt; is in R.  The closure of R is the set of all pairs&#60;br /&#62;
&#38;lt;&#38;lt;s, t&#38;gt;&#38;gt; such that s and t are in the support of R and there is a path&#60;br /&#62;
from s to t.&#60;br /&#62;
@@@&#60;br /&#62;
This leads to the following definition of the closure:&#60;br /&#62;
@@@&#60;br /&#62;
Support(R)@==@{r[1]@:@r@\in@R}@\cup@{r[2]@:@r@\in@R}&#60;br /&#62;
@@@&#60;br /&#62;
Closure(R)@==@&#60;br /&#62;
@@LET@S@==@Support(R)&#60;br /&#62;
@@IN@@{&#38;lt;&#38;lt;s,@t&#38;gt;&#38;gt;@\in@S@\X@S@:@\E@p@\in@Seq(S)@:@/\@Len(p)@&#38;gt;@1&#60;br /&#62;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/\@p[1]@=@s&#60;br /&#62;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/\@p[Len(p)]@=@t&#60;br /&#62;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/\@\A@i@\in@@1..(Len(p)-1)@:&#60;br /&#62;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&#38;lt;&#38;lt;p[i],@p[i+1]&#38;gt;&#38;gt;@\in@R}&#60;br /&#62;
@@@&#60;br /&#62;
This can't be evaluated by TLC because Seq(S) is an infinite set.&#60;br /&#62;
However, it's not hard to see that it suffices to consider paths&#60;br /&#62;
whose length is at most Cardinality(S).  I'll let you modify the&#60;br /&#62;
definition to one that TLC will be able to evaluate.&#60;br /&#62;
@@@&#60;br /&#62;
However, the naive evaluation that TLC uses makes this definition&#60;br /&#62;
rather inefficient.  (As an exercise, find an upper bound on its&#60;br /&#62;
complexity.)  A definition that TLC can evaluate more efficiently is&#60;br /&#62;
obtained by recursively defining the function C with domain Nat such&#60;br /&#62;
that C[n] the set of all pairs &#38;lt;&#38;lt;s, t&#38;gt;&#38;gt; with s, t \in Support(R) such&#60;br /&#62;
that there exists a path of length at most n+1 from s to t in Support(R),&#60;br /&#62;
and then define Closure(R) to equal C[Cardinality(Support(R))-1].&#60;br /&#62;
@@@@&#60;br /&#62;
To check your definitions, define Closure1 and Closure2 with these two&#60;br /&#62;
definitions, and have TLC check&#60;br /&#62;
@@@@@&#60;br /&#62;
@@@ASSUME@\A@N@\in@0..3@:@\A@R@\in@SUBSET@((1..N)@\X@(1..N))@:@&#60;br /&#62;
@@@@@@@@@@@@@@@Closure1(R)@=@Closure2(R)
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Leslie Lamport on "Best way to define transitive closure as an operator for TLC?"</title>
			<link>http://bbpress.tlaplus.net/topic/best-way-to-define-transitive-closure-as-an-operator-for-tlc#post-143</link>
			<pubDate>Mon, 20 Jun 2011 17:40:56 +0000</pubDate>
			<dc:creator>Leslie Lamport</dc:creator>
			<guid isPermaLink="false">143@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;If R is a relation--that is a set of ordered pairs--let its support be&#60;br /&#62;
the set of all elements that appear in those pairs.  Then R defines a&#60;br /&#62;
directed graph on its support, where there is an edge from s to t iff&#60;br /&#62;
&#38;lt;&#38;lt;s, t&#38;gt;&#38;gt; is in R.  The closure of R is the set of all pairs&#60;br /&#62;
&#38;lt;&#38;lt;s, t&#38;gt;&#38;gt; such that s and t are in the support of R and there is a path&#60;br /&#62;
from s to t.&#60;/p&#62;
&#60;p&#62;This leads to the following definition of the closure&#60;/p&#62;
&#60;p&#62;Support(R) == {r[1] : r \in R} \cup {r[2] : r \in R}&#60;/p&#62;
&#60;p&#62;Closure(R) ==&#60;br /&#62;
  LET S == Support(R)&#60;br /&#62;
  IN  {&#38;lt;&#38;lt;s, t&#38;gt;&#38;gt; \in S \X S : \E p \in Seq(S) : /\ Len(p) &#38;gt; 1&#60;br /&#62;
                                               /\ p[1] = s&#60;br /&#62;
                                               /\ p[Len(p)] = t&#60;br /&#62;
                                               /\ \A i \in  1..(Len(p)-1) :&#60;br /&#62;
                                                      &#38;lt;&#38;lt;p[i], p[i+1]&#38;gt;&#38;gt; \in R}&#60;/p&#62;
&#60;p&#62;This can't be evaluated by TLC because Seq(S) is an infinite set.&#60;br /&#62;
However, it's not hard to see that it suffices to consider paths&#60;br /&#62;
whose length is at most Cardinality(S).  I'll let you modify the&#60;br /&#62;
definition to one that TLC will be able to evaluate.&#60;/p&#62;
&#60;p&#62;However, the naive evaluation that TLC uses makes this definition&#60;br /&#62;
rather inefficient.  (As an exercise, find an upper bound on its&#60;br /&#62;
complexity.)  A definition that TLC can evaluate more efficiently is&#60;br /&#62;
obtained by recursively defining the function C with domain Nat such&#60;br /&#62;
that C[n] is the set of all pairs &#38;lt;&#38;lt;s, t&#38;gt;&#38;gt; with s, t \in Support(R) such&#60;br /&#62;
that there exists a path of length at most n+1 from s to t in Support(R),&#60;br /&#62;
and then define Closure(R) to equal C[Cardinality(Support(R))-1].&#60;/p&#62;
&#60;p&#62;To check your definitions, define Closure1 and Closure2 with these two&#60;br /&#62;
definitions, and have TLC check&#60;/p&#62;
&#60;p&#62;   ASSUME \A N \in 0..3 : \A R \in SUBSET ((1..N) \X (1..N)) :&#60;br /&#62;
               Closure1(R) = Closure2(R)
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Hilleman on "Measuring memory usage"</title>
			<link>http://bbpress.tlaplus.net/topic/measuring-memory-usage#post-142</link>
			<pubDate>Sat, 18 Jun 2011 09:53:44 +0000</pubDate>
			<dc:creator>Hilleman</dc:creator>
			<guid isPermaLink="false">142@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;I want to know how much memory was used after the model checker has run. In other model checkers like Uppaal we can check how much memory was used after a query has processed. &#60;a href=&#34;http://www.ebelow.com/ipad-2-chargers.html&#34;&#62;ipad2 Chargers&#60;/a&#62;      &#60;a href=&#34;http://www.ebelow.com/ipad-2-pouch-cases.html&#34;&#62;iPad 2 Pouch Case&#60;/a&#62;    &#60;a href=&#34;http://www.ebelow.com/ipad-2-soft-cases.html&#34;&#62;ipad 2 Soft case&#60;/a&#62;
&#60;/p&#62;</description>
		</item>
		<item>
			<title>cnewcom on "Best way to define transitive closure as an operator for TLC?"</title>
			<link>http://bbpress.tlaplus.net/topic/best-way-to-define-transitive-closure-as-an-operator-for-tlc#post-141</link>
			<pubDate>Sun, 05 Jun 2011 23:05:38 +0000</pubDate>
			<dc:creator>cnewcom</dc:creator>
			<guid isPermaLink="false">141@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Does anyone have a definition of a transitive closure operator that is efficient for TLC to evaluate?&#60;/p&#62;
&#60;p&#62;A paper [1] shows that transitive closure cannot be defined in first order logic, but it can be defined in Datalog, as datalog guarantees to use the least-fixed-point solution.&#60;br /&#62;
I would use this CHOOSE solution, which appears to work for small test cases.  But per [2], TLA+ does not guarantee that CHOOSE finds the least fix-point solution, which means this definition is incorrect (I think).  This definition is also very slow in TLC, for anything other than tiny inputs.&#60;/p&#62;
&#60;p&#62;IsTransitive(r) == \A x, y, z \in Univ :&#60;br /&#62;
	                 &#38;lt;&#38;lt;x, y&#38;gt;&#38;gt; \in r /\ &#38;lt;&#38;lt;y, z&#38;gt;&#38;gt; \in r =&#38;gt; &#38;lt;&#38;lt;x, z&#38;gt;&#38;gt; \in r  &#60;/p&#62;
&#60;p&#62;TCChoose(r) == CHOOSE TCr \in SUBSET (Univ \X Univ) :&#60;br /&#62;
                    /\ r \subseteq TCr            (* \subset doesn't parse, why? p273 *)&#60;br /&#62;
                    /\ IsTransitive(TCr)&#60;br /&#62;
                    /\ (* No smaller value meets the same conditions *)&#60;br /&#62;
                        ~ \E tuple \in TCr :&#60;br /&#62;
                            LET one_smaller == TCr \ {tuple}&#60;br /&#62;
                            IN  /\ r \subseteq one_smaller&#60;br /&#62;
                                /\ IsTransitive(one_smaller)&#60;/p&#62;
&#60;p&#62;I wrote a constructive version that recurs until reaching least fixpoint (below).&#60;br /&#62;
But I’m planning to make heavy use of this operator, so I’d like to know if there’s a faster way.&#60;br /&#62;
Also, I recall reading that it’s possible to implement particular TLA+ modules in Java, for TLC.  Has anyone found that to be worth the effort?&#60;/p&#62;
&#60;p&#62;Thanks,&#60;/p&#62;
&#60;p&#62;Chris&#60;/p&#62;
&#60;p&#62;TCRecur(r) == LET RECURSIVE selfJoin(_)&#60;br /&#62;
                selfJoin(r1) ==&#60;br /&#62;
                  LET MissingJoinTuples(left,right) == {&#38;lt;&#38;lt;x, z&#38;gt;&#38;gt; \in (Univ \X Univ) :&#60;br /&#62;
                              /\ &#38;lt;&#38;lt;x, z&#38;gt;&#38;gt; \notin left&#60;br /&#62;
                              /\ &#38;lt;&#38;lt;x, z&#38;gt;&#38;gt; \notin right&#60;br /&#62;
                              /\ \E y \in Univ : &#38;lt;&#38;lt;x, y&#38;gt;&#38;gt; \in left /\ &#38;lt;&#38;lt;y, z&#38;gt;&#38;gt; \in right}&#60;br /&#62;
                      mjt == MissingJoinTuples(r1, r1)&#60;br /&#62;
                  IN IF mjt = {} THEN r1   (* have reached least fixpoint, so this must be transitive closure *)&#60;br /&#62;
                                 ELSE LET bigger == r1 \union mjt&#60;br /&#62;
                                      IN bigger \union selfJoin(bigger)&#60;br /&#62;
              IN selfJoin(r)&#60;/p&#62;
&#60;p&#62;(* Test constant expressions, with Univ &#38;lt;- {a, b, c, d, e, f}&#60;/p&#62;
&#60;p&#62;TCChoose({&#38;lt;&#38;lt;a, b&#38;gt;&#38;gt;, &#38;lt;&#38;lt;b, c&#38;gt;&#38;gt;, &#38;lt;&#38;lt;d, e&#38;gt;&#38;gt;, &#38;lt;&#38;lt;d, f&#38;gt;&#38;gt;}) = {&#38;lt;&#38;lt;a, b&#38;gt;&#38;gt;, &#38;lt;&#38;lt;a, c&#38;gt;&#38;gt;, &#38;lt;&#38;lt;b, c&#38;gt;&#38;gt;, &#38;lt;&#38;lt;d, e&#38;gt;&#38;gt;, &#38;lt;&#38;lt;d, f&#38;gt;&#38;gt;}&#60;br /&#62;
*) &#60;/p&#62;
&#60;p&#62;[1] &#60;a href=&#34;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.127.8266&#38;amp;rep=rep1&#38;amp;type=pdf&#34; rel=&#34;nofollow&#34;&#62;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.127.8266&#38;amp;rep=rep1&#38;amp;type=pdf&#60;/a&#62;&#60;/p&#62;
&#60;p&#62;[2] From &#60;a href=&#34;http://www.loria.fr/~merz/papers/tla+logic2008.pdf&#34; rel=&#34;nofollow&#34;&#62;http://www.loria.fr/~merz/papers/tla+logic2008.pdf&#60;/a&#62;&#60;/p&#62;
&#60;p&#62;Recursive functions can be defined in terms of choice, e.g.&#60;br /&#62;
factorial _=&#60;br /&#62;
choose f : f = [n ∈ Nat 7→ if n = 0 then 1 else n ∗ f [n − 1]]&#60;br /&#62;
which TLA+, using some syntactic sugar, offers to write more concisely as&#60;br /&#62;
factorial [n ∈ Nat ] _= if n = 0 then 1 else n ∗ factorial [n − 1]&#60;br /&#62;
Of course, as with any construction based on choice, such a definition should&#60;br /&#62;
be justified by proving the existence of a function that satisfies the recursive&#60;br /&#62;
equation. Unlike standard semantics of programming languages, TLA+ does&#60;br /&#62;
not commit to the least fixed point of a recursively defined function in cases&#60;br /&#62;
where there are several solutions.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>giuliano on "Possible bug in TLC?"</title>
			<link>http://bbpress.tlaplus.net/topic/possible-bug-in-tlc#post-140</link>
			<pubDate>Fri, 15 Apr 2011 09:50:29 +0000</pubDate>
			<dc:creator>giuliano</dc:creator>
			<guid isPermaLink="false">140@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Hello, I simplified a bit the example:&#60;br /&#62;
File Test.tla:&#60;br /&#62;
&#60;pre&#62;&#60;code&#62;------------------------ MODULE Test ------------------------

CONSTANTS X

VARIABLES y

-----------------------------------

Init == y = {}

Z == {z \in [{0} -&#38;gt; {0}] : \E x \in X : FALSE}

Next == y&#38;#39; = Z

==============================&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;File MCTest.tla:&#60;br /&#62;
&#60;pre&#62;&#60;code&#62;-------------------- MODULE MCTest --------------------------------

X == {}

VARIABLES y 

I == INSTANCE Test 

Next == I!Next
Init == I!Init

============================&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;File MCTest.cfg:&#60;br /&#62;
&#60;pre&#62;&#60;code&#62;INIT Init
NEXT Next&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;Given those files, the command &#34;java -cp ~/tla/tla/ tlc2/TLC MCTest.tla&#34; outputs:&#60;br /&#62;
&#60;pre&#62;&#60;code&#62;TLC2 Version 2.03 of 10 March 2011
Running in Model-Checking mode.
Parsing file MCTest.tla
Parsing file Test.tla
Semantic processing of module Test
Semantic processing of module MCTest
Starting... (2011-04-15 10:49:44)
Computing initial states...
Finished computing initial states: 1 distinct state generated.
Error: In evaluation, the identifier X is either undefined or not an operator.
line 11, col 37 to line 11, col 37 of module Test
Error: The behavior up to this point is:
State 1: &#38;lt;Initial predicate&#38;gt;
y = {}

Error: The error occurred when TLC was evaluating the nested
expressions at the following positions:
0. Line 11, column 37 to line 11, column 37 in Test

3 states generated, 1 distinct states found, 0 states left on queue.
The depth of the complete state graph search is 1.
Finished. (2011-04-15 10:49:44)&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;Line 11 contains&#60;br /&#62;
&#60;code&#62;Z == {z \in [{0} -&#38;gt; {0}] : \E x \in X : FALSE}&#60;/code&#62;
&#60;/p&#62;</description>
		</item>
		<item>
			<title>robson on "WildFire Challenge and TLA+ ToolBox"</title>
			<link>http://bbpress.tlaplus.net/topic/wildfire-challenge-and-tla-toolbox#post-139</link>
			<pubDate>Tue, 12 Apr 2011 18:24:45 +0000</pubDate>
			<dc:creator>robson</dc:creator>
			<guid isPermaLink="false">139@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Hi Stephan,&#60;br /&#62;
thanks for you help. I'll check this more carefully.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>giuliano on "Possible bug in TLC?"</title>
			<link>http://bbpress.tlaplus.net/topic/possible-bug-in-tlc#post-138</link>
			<pubDate>Tue, 12 Apr 2011 15:07:34 +0000</pubDate>
			<dc:creator>giuliano</dc:creator>
			<guid isPermaLink="false">138@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;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).&#60;/p&#62;
&#60;p&#62;Here is a simplified version of my setup:&#60;br /&#62;
-&#60;br /&#62;
I defined two modules, NoCrash and Library, as follows (in two different files):&#60;/p&#62;
&#60;pre&#62;&#60;code&#62;------------------------ MODULE NoCrash ------------------------
EXTENDS Library
CONSTANTS X
VARIABLES y
-----------------------------------
Init == y = TRUE
Z == {h \in MySeqs : \E p \in X : TRUE}
Next == Z = TRUE
==============================&#60;/code&#62;&#60;/pre&#62;
&#60;pre&#62;&#60;code&#62;------------------------------- MODULE Library  -------------------------------
CONSTANT MySeqs
=====================================&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;In order to use TLC I then defined module MCNoCrash as follows:&#60;/p&#62;
&#60;pre&#62;&#60;code&#62;-------------------- MODULE MCNoCrash --------------------------------
EXTENDS Library
CONSTANT X
BS == [{1} -&#38;gt; {1}]
VARIABLE y
I == INSTANCE NoCrash
Next == I!Next
Init == I!Init
============================&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;And the following configuration file:&#60;/p&#62;
&#60;pre&#62;&#60;code&#62;INIT Init
NEXT Next
CONSTANTS
X = {}
MySeqs &#38;lt;- BS&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;When running TLC with the command &#34;java -cp ~/tla/tla/ tlc2/TLC MCNoCrash.tla&#34;, I get the following output:&#60;br /&#62;
-&#60;br /&#62;
Computing initial states...&#60;br /&#62;
Finished computing initial states: 1 distinct state generated.&#60;br /&#62;
Error: In evaluation, the identifier X is either undefined or not an operator.&#60;br /&#62;
-&#60;br /&#62;
TLC says the error appeared while evaluating the expression &#34;{h \in MySeqs : \E p \in X : TRUE}&#34;&#60;br /&#62;
-&#60;br /&#62;
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} -&#38;gt; {1}] in module MCNoCrash the error disappears. It also disappears if I replace Z by its definition when defining Next in module NoCrash. &#60;/p&#62;
&#60;p&#62;Is this a bug or am I doing something wrong?&#60;/p&#62;
&#60;p&#62;I also get the same error in another situation involving instantiation.&#60;br /&#62;
-&#60;br /&#62;
Thanks for reading my message,&#60;br /&#62;
Giuliano
&#60;/p&#62;</description>
		</item>
		<item>
			<title>merz on "WildFire Challenge and TLA+ ToolBox"</title>
			<link>http://bbpress.tlaplus.net/topic/wildfire-challenge-and-tla-toolbox#post-137</link>
			<pubDate>Tue, 12 Apr 2011 11:51:04 +0000</pubDate>
			<dc:creator>merz</dc:creator>
			<guid isPermaLink="false">137@http://bbpress.tlaplus.net/</guid>
			<description>&#60;p&#62;Hi,&#60;/p&#62;
&#60;p&#62;indeed TLC cannot evaluate unbounded CHOOSE expressions, i.e. CHOOSE x: P(x). See the TLC documentation: only bounded quantification over finite sets is supported, such as \A x \in S: P(x) or CHOOSE x \in S: P(x), where S is a finite set.&#60;/p&#62;
&#60;p&#62;By the way, Wildfire was not originally intended for model checking -- you would have to rewrite the model to make it amenable to (finite-state) model checking.&#60;/p&#62;
&#60;p&#62;Best regards,&#60;/p&#62;
&#60;p&#62;Stephan
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>

