🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.specification
Article #94

Re: Linear and Branching Time Temporal Logic

#94
From: Lamport
Date: Fri, 21 Aug 1992 23:05
62 lines
3504 bytes
In article <172o80INNk2k@iraul1.ira.uka.de>, zundel@i10s7 (Armin Zundel) writes:

|> after reading some papers about temporal logic I had some problems to
|> decide when to use linear time logics and when to use branching time
|> logics. I decided to read 
|> 
|> "Sometimes" and "Not Never" revisited: On Branching versus Linear Time
|> Temporal Logic 
|> by E.a. Emerson and J.Y. Halpern.
|> 
|> Now I'm even more confused. I just want so specify distributed systems.
|> Can anyone tell me what real life properties can be specified with
|> linear time logic and which can be specified in branching time logic. 


Dear Mr. Zundel,

Your message will probably stimulate lots of philosophical debate among
theoreticians.  Here's my view, based on my experience actually
verifying and specifying concurrent systems.  

The simplest linear-time logic, with just state predicates and the Box
operator, can express the intuitive concepts "always" and "eventually".
The analogous branching-time logic, with just state predicates and the
Box operator, can express the intuitive concepts "always" and
"possibly".  Since "eventually" is a pretty important concept, I don't
think anyone advocates the use of such a simple branching-time logic.
I believe that the branching-time logics that people propose allow one
to express both "eventually" and "possibly".  I have never wanted to
write a specification such as

  "If the user enters an input, then it is possible for the system to
   produce the correct answer."

so the ability to express possibility is of no interest to me.
Therefore, I've found linear-time temporal logic adequately expressive,
and have no need for complicated branching-time logics.

Unfortunately, a simple linear-time logic with just Box and state
predicates isn't expressive enough.  You need something more.  The
traditional approach has been to add more powerful temporal operators,
and to write a specification as a list of temporal-logic formulas.
However, my experience is that, for systems of any complexity, such
specifications become incomprehensible and are usually wrong.  The only
practical specification methods are ones that write a specification as
an abstract program.  (Petri nets and CCS formulas are examples of
abstract programs.) However, programs aren't as mathematically simple
or as amenable to manipulation and reasoning as logical formulas are.

My approach is to use just the Box operator, but to generalize from
simple state predicates to predicates on pairs of states.  With this
logic, which I call TLA (the Temporal Logic of Actions), it is easy to
write abstract programs as logical formulas.  For example, one could
express the program that starts with x equal to 0 and repeatedly
increments x by one as

   (x = 0)  /\  [](x' = x+1)

(where /\ denotes conjunction and [] denotes Box).  TLA is described in
a research report that I am sending you in a separate message.

Leslie Lamport
Technical Details
Message-ID: <1992Aug21.230556.9861@src.dec.com>
Path: arc1-ca.pugleaf.net!sparky!uunet!decwrl!deccrl!news.crl.dec.com!pa.dec.com!src.dec.com!src.dec.com!horning
References: <172o80INNk2k@iraul1.ira.uka.de>

Show Full Headers
Complete Article Headers
Newsgroups: comp.specification
Path: arc1-ca.pugleaf.net!sparky!uunet!decwrl!deccrl!news.crl.dec.com!pa.dec.com!src.dec.com!src.dec.com!horning
From: Lamport@src.dec.com
Subject: Re: Linear and Branching Time Temporal Logic
Message-ID: <1992Aug21.230556.9861@src.dec.com>
Followup-To: Lamport@src.dec.com
Keywords: TLA, Temporal Logic of Actions
Sender: news@src.dec.com (News)
Organization: DEC Systems Research Center
References:  <172o80INNk2k@iraul1.ira.uka.de>
Date: Fri, 21 Aug 92 23:05:56 GMT
Lines: 64