src/HOL/TLA/Memory/RPC.thy
author urbanc
Tue, 13 Dec 2005 18:11:21 +0100
changeset 18396 b3e7da94b51f
parent 17309 c43ed29bd197
child 21624 6f79647cf536
permissions -rw-r--r--
added a fresh_left lemma that contains all instantiation for the various atom-types.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     1
(*
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     2
    File:        RPC.thy
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
     3
    ID:          $Id$
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     4
    Author:      Stephan Merz
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     5
    Copyright:   1997 University of Munich
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     6
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     7
    Theory Name: RPC
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     8
    Logic Image: TLA
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     9
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    10
    RPC-Memory example: RPC specification
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    11
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    12
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    13
theory RPC
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    14
imports RPCParameters ProcedureInterface Memory
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    15
begin
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    16
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    17
types
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    18
  rpcSndChType  = "(rpcOp,Vals) channel"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    19
  rpcRcvChType  = "memChType"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    20
  rpcStType     = "(PrIds => rpcState) stfun"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    21
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    22
consts
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    23
  (* state predicates *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    24
  RPCInit      :: "rpcRcvChType => rpcStType => PrIds => stpred"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    25
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    26
  (* actions *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    27
  RPCFwd     :: "rpcSndChType => rpcRcvChType => rpcStType => PrIds => action"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    28
  RPCReject  :: "rpcSndChType => rpcRcvChType => rpcStType => PrIds => action"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    29
  RPCFail    :: "rpcSndChType => rpcRcvChType => rpcStType => PrIds => action"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    30
  RPCReply   :: "rpcSndChType => rpcRcvChType => rpcStType => PrIds => action"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    31
  RPCNext    :: "rpcSndChType => rpcRcvChType => rpcStType => PrIds => action"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    32
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    33
  (* temporal *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    34
  RPCIPSpec   :: "rpcSndChType => rpcRcvChType => rpcStType => PrIds => temporal"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    35
  RPCISpec   :: "rpcSndChType => rpcRcvChType => rpcStType => temporal"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    36
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    37
defs
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    38
  RPCInit_def:       "RPCInit rcv rst p == PRED ((rst!p = #rpcA) & ~Calling rcv p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    39
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    40
  RPCFwd_def:        "RPCFwd send rcv rst p == ACT
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    41
                         $(Calling send p)
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    42
                         & $(rst!p) = # rpcA
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    43
                         & IsLegalRcvArg<arg<$(send!p)>>
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    44
                         & Call rcv p RPCRelayArg<arg<send!p>>
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    45
                         & (rst!p)$ = # rpcB
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    46
                         & unchanged (rtrner send!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    47
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    48
  RPCReject_def:     "RPCReject send rcv rst p == ACT
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    49
                           $(rst!p) = # rpcA
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    50
                         & ~IsLegalRcvArg<arg<$(send!p)>>
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    51
                         & Return send p #BadCall
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    52
                         & unchanged ((rst!p), (caller rcv!p))"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    53
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    54
  RPCFail_def:       "RPCFail send rcv rst p == ACT
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    55
                           ~$(Calling rcv p)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    56
                         & Return send p #RPCFailure
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    57
                         & (rst!p)$ = #rpcA
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    58
                         & unchanged (caller rcv!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    59
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    60
  RPCReply_def:      "RPCReply send rcv rst p == ACT
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    61
                           ~$(Calling rcv p)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    62
                         & $(rst!p) = #rpcB
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    63
                         & Return send p res<rcv!p>
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    64
                         & (rst!p)$ = #rpcA
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    65
                         & unchanged (caller rcv!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    66
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    67
  RPCNext_def:       "RPCNext send rcv rst p == ACT
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    68
                        (  RPCFwd send rcv rst p
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    69
                         | RPCReject send rcv rst p
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    70
                         | RPCFail send rcv rst p
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    71
                         | RPCReply send rcv rst p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    72
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    73
  RPCIPSpec_def:     "RPCIPSpec send rcv rst p == TEMP
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    74
                           Init RPCInit rcv rst p
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    75
                         & [][ RPCNext send rcv rst p ]_(rst!p, rtrner send!p, caller rcv!p)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    76
                         & WF(RPCNext send rcv rst p)_(rst!p, rtrner send!p, caller rcv!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    77
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    78
  RPCISpec_def:      "RPCISpec send rcv rst == TEMP (ALL p. RPCIPSpec send rcv rst p)"
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    79
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 11703
diff changeset
    80
ML {* use_legacy_bindings (the_context ()) *}
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    81
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    82
end