src/HOL/TLA/Memory/RPCParameters.thy
author wenzelm
Fri, 08 Mar 2002 16:24:06 +0100
changeset 13049 ce180e5b7fa0
parent 11703 6e5de8d4290a
child 17309 c43ed29bd197
permissions -rw-r--r--
tuned;
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:        RPCParameters.thy
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     3
    Author:      Stephan Merz
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     4
    Copyright:   1997 University of Munich
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     5
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     6
    Theory Name: RPCParameters
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     7
    Logic Image: TLA
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     8
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     9
    RPC-Memory example: RPC parameters
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    10
    For simplicity, specify the instance of RPC that is used in the
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    11
    memory implementation.
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    12
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    13
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    14
RPCParameters = MemoryParameters +
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    15
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    16
datatype  rpcOp = memcall memOp | othercall Vals
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    17
datatype  rpcState = rpcA | rpcB
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    18
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    19
consts
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    20
  (* some particular return values *)
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    21
  RPCFailure     :: Vals
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    22
  BadCall        :: Vals
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    23
  
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    24
  (* Translate an rpc call to a memory call and test if the current argument
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    25
     is legal for the receiver (i.e., the memory). This can now be a little
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    26
     simpler than for the generic RPC component. RelayArg returns an arbitrary
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    27
     memory call for illegal arguments. *)
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    28
  IsLegalRcvArg  :: rpcOp => bool
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    29
  RPCRelayArg    :: rpcOp => memOp
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    30
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    31
rules
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    32
  (* RPCFailure is different from MemVals and exceptions *)
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    33
  RFNoMemVal        "RPCFailure ~: MemVal"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    34
  NotAResultNotRF   "NotAResult ~= RPCFailure"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    35
  OKNotRF           "OK ~= RPCFailure"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    36
  BANotRF           "BadArg ~= RPCFailure"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    37
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    38
defs
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    39
  IsLegalRcvArg_def "IsLegalRcvArg ra ==
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    40
		         case ra of (memcall m) => True
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    41
		                  | (othercall v) => False"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    42
  RPCRelayArg_def   "RPCRelayArg ra ==
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    43
		         case ra of (memcall m) => m
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    44
		                  | (othercall v) => arbitrary"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    45
end