Up to index of Isabelle/HOL/TLA/Memory
theory MemoryParameters(* File: MemoryParameters.thy ID: $Id: MemoryParameters.thy,v 1.6 2006/12/02 01:52:05 wenzelm Exp $ Author: Stephan Merz Copyright: 1997 University of Munich *) header {* RPC-Memory example: Memory parameters *} theory MemoryParameters imports RPCMemoryParams begin (* the memory operations *) datatype memOp = read Locs | write Locs Vals consts (* memory locations and contents *) MemLoc :: "Locs set" MemVal :: "Vals set" (* some particular values *) OK :: "Vals" BadArg :: "Vals" MemFailure :: "Vals" NotAResult :: "Vals" (* defined here for simplicity *) (* the initial value stored in each memory cell *) InitVal :: "Vals" axioms (* basic assumptions about the above constants and predicates *) BadArgNoMemVal: "BadArg ~: MemVal" MemFailNoMemVal: "MemFailure ~: MemVal" InitValMemVal: "InitVal : MemVal" NotAResultNotVal: "NotAResult ~: MemVal" NotAResultNotOK: "NotAResult ~= OK" NotAResultNotBA: "NotAResult ~= BadArg" NotAResultNotMF: "NotAResult ~= MemFailure" lemmas [simp] = BadArgNoMemVal MemFailNoMemVal InitValMemVal NotAResultNotVal NotAResultNotOK NotAResultNotBA NotAResultNotMF NotAResultNotOK [symmetric] NotAResultNotBA [symmetric] NotAResultNotMF [symmetric] lemma MemValNotAResultE: "[| x : MemVal; (x ~= NotAResult ==> P) |] ==> P" using NotAResultNotVal by blast end
lemma
BadArg ∉ MemVal
MemFailure ∉ MemVal
InitVal ∈ MemVal
NotAResult ∉ MemVal
NotAResult ≠ OK
NotAResult ≠ BadArg
NotAResult ≠ MemFailure
OK ≠ NotAResult
BadArg ≠ NotAResult
MemFailure ≠ NotAResult
lemma MemValNotAResultE:
[| x ∈ MemVal; x ≠ NotAResult ==> P |] ==> P