From @computer-lab.cambridge.ac.uk:tfm@uk.ac.cam.cl  Fri Aug  3 02:59:07 1990
Received: by iris.ucdavis.edu (5.57/UCD.EECS.2.0)
        id AA07883; Fri, 3 Aug 90 02:59:07 PDT
Received: from ucdavis.ucdavis.edu by clover.ucdavis.edu (5.59/UCD.EECS.1.11)
        id AA25173; Fri, 3 Aug 90 03:03:04 PDT
Received: from nsfnet-relay.ac.uk by ucdavis.ucdavis.edu (5.61/UCD2.03)
        id AA23435; Fri, 3 Aug 90 02:58:41 -0700
Received: from sun.nsfnet-relay.ac.uk by vax.NSFnet-Relay.AC.UK
           via Janet with NIFTP  id aa03033; 3 Aug 90 10:36 BST
Received: from cl.cam.ac.uk by gannet.cl.cam.ac.uk with SMTP (PP) id <aa29224>;
          Fri, 3 Aug 1990 10:48:37 +0000
Received: by uk.ac.cam.cl.moorhen (4.0/SMI-3.0DEV3) id AA01790;
          Fri, 3 Aug 90 10:48:21 BST
Date: Fri, 3 Aug 90 10:48:21 BST
From: tfm@uk.ac.cam.cl
Message-Id: <9008030948.AA01790@uk.ac.cam.cl.moorhen>
To: info-hol@clover.ucdavis.edu
Subject: temporal operators can't be truth functional
Sender: tfm@uk.ac.cam.cl

RE: Kumar's message about temporal logic.
-----------------------------------------

     In Kumar's message, some questions are asked about the turnstile symbol
(|-) in HOL.  Users should note that the turnstile symbol is not a logical
"operator" in the same sense as things like /\ (and), ==> (implies) etc.
Rather, the notation

  A1,...,An |- C

should be be read as a metalinguistic assertion that there exists a natural
deduction proof of the boolean term C from the assumptions A1,...,An.  Note
that Kumar's DEFINITION:

     "Given
         H |- A ==> B  is equivalent to H,A |- B
          where H is some hypothesis."

is not exactly what is meant by turnstile in HOL, though we do have the
rules of inference:

          H |- A ==> B                     H,A |- B
       -------------------     and     ------------------
           H,A |- B                      H |- A ==> B



     Kumar needs a rather more elaborate embedding of temporal logic in HOL,
both to support the proposed notion of turnstile and to correctly capture the
semantics of modal operators.  Note that just doing:

      new_constant(`NEXT`, ":bool->bool");;

      let NEXT_NOT_AX =
          new_axiom(`NEXT_NOT_AX`, "!A:bool. ~(NEXT A) = NEXT(~A)");;

etc (as proposed) merely makes NEXT a partially-specified truth-function. In
this case, NEXT_NOT_AX is just the same as saying that NEXT is either the
identity function or negation.

    To define a temporal (modal) operator such as NEXT in HOL, one must use a
scheme based on an underlying notion of time (possible worlds).  For example,
one could take predicates as functions from numbers to booleans, and define
NEXT and ALWAYS by:

      (NEXT P) t = P (t+1)

      (ALWAYS P) t = !n. P (t+n)

Of course, one must then redefine the propositional connectives (/\, ==>, etc.
to act on predicates.

The development of a theory along these lines is straightforward, if tedious.

Tom

PS: I have just received a temporal logic theory of the kind mentioned above
from Amit Jasuja at Davis, and will include it in the new "contrib" directory
in HOL version 1.12 (with possible later installation in the library).




