(*
File: MemClerkParameters.thy
ID: $Id$
Author: Stephan Merz
Copyright: 1997 University of Munich
Theory Name: MemClerkParameters
Logic Image: TLA
RPC-Memory example: Parameters of the memory clerk.
*)
theory MemClerkParameters
imports RPCParameters
begin
datatype mClkState = clkA | clkB
types
(* types sent on the clerk's send and receive channels are argument types
of the memory and the RPC, respectively *)
mClkSndArgType = "memOp"
mClkRcvArgType = "rpcOp"
constdefs
(* translate a memory call to an RPC call *)
MClkRelayArg :: "memOp => rpcOp"
"MClkRelayArg marg == memcall marg"
(* translate RPC failures to memory failures *)
MClkReplyVal :: "Vals => Vals"
"MClkReplyVal v == if v = RPCFailure then MemFailure else v"
ML {* use_legacy_bindings (the_context ()) *}
end