Theory Model
theory Model
imports
ConcurrentIMP.CIMP
"HOL-Library.Sublist"
begin
declare subst_all [simp del] [[simproc del: defined_all]]
section‹A model of a Schism garbage collector \label{sec:gc-model}›
text ‹
The following formalises Figures~2.8 (‹mark_object_fn›),
2.9 (load and store but not alloc), and 2.15 (garbage collector) of
\<^citet>‹"Pizlo201xPhd"›; see also \<^citet>‹"Pizlo+2010PLDI"›.
We additionally need to model TSO memory, the handshakes and
compare-and-swap (\texttt{CAS}). We closely model things where
interference is possible and abstract everything else.
@{bold ‹@{emph ‹NOTE›}: this model is for TSO
\emph{only}. We elide any details irrelevant for that memory
model.›}
We begin by defining the types of the various parts. Our program
locations are labelled with strings for readability. We enumerate the
names of the processes in our system. The safety proof treats an
arbitary (unbounded) number of mutators.
›
type_synonym location = string