Theory Abbrevs

theory Abbrevs
imports PIMP SyntaxTweaks
begin


text ‹now we can use dots as a term›

consts dots::"'a" () 


lemma conj_to_impl: "(P  Q  R) = (P  Q  R)"
  by auto


notation (in xvalid_program) (latex output)
barrier_inv (flush'_inv)


abbreviation
"acquire sb owns  acquired True sb owns"
notation (latex output)
direct_memop_step (‹_ latex‹$\overset{\isa{v}_\isa{d}}{\rightarrow}_{\isa{m}}$› _› [60,60] 100)
notation (latex output)
virtual_memop_step (‹_ latex‹$\overset{\isa{v}}{\rightarrow}_{\isa{m}}$› _› [60,60] 100)



context program
begin
term "(ts, m) sb (ts',m')"
notation (latex output) store_buffer.concurrent_step (‹_ latex‹$\overset{\isa{sb}}{\Rightarrow}$› _› [60,60] 100)
notation (latex output) virtual.concurrent_step (‹_ latex‹$\overset{\isa{v}}{\Rightarrow}$› _› [60,60] 100)
thm store_buffer.concurrent_step.Program
end


abbreviation (output)
"sbh_global_step  computation.concurrent_step sbh_memop_step flush_step stmt_step (λp p' is sb. sb @ [Progsb p p' is])"

notation (latex output)
sbh_global_step (‹_ latex‹$\overset{\isa{sbh}}{\Rightarrow}$› _› [60,60] 100)


notation (latex output)
direct_pimp_step (‹_ latex‹$\overset{\isa{v}}{\Rightarrow}$› _› [60,60] 100)


notation (latex output)
sbh_memop_step (‹_ latex‹$\overset{\isa{sbh}}{\rightarrow}_{\isa{m}}$› _› [60,60] 100)

notation (latex output)
sb_memop_step (‹_ latex‹$\overset{\isa{sb}}{\rightarrow}_{\isa{m}}$› _› [60,60] 100)


notation (output) 
sim_direct_config (‹_  _ › [60,60] 100)

notation (output) 
flush_step (‹_ sbh _› [60,60] 100)

notation (output) 
store_buffer_step (‹_ sb _› [60,60] 100)

notation (output)
outstanding_refs (refs)

notation (output)
is_volatile_Writesb (volatile'_Write)

abbreviation (output)
"not_volatile_write  Not  is_volatile_Writesb"

notation (output)
"flush_all_until_volatile_write" (exec'_all'_until'_volatile'_write)
notation (output)
"share_all_until_volatile_write" (share'_all'_until'_volatile'_write)

notation (output)
stmt_step (‹_ _ p _› [60,60,60] 100)

notation (output)
augment_rels (aug)

context program
begin
notation (latex output)
direct_concurrent_step (‹_ latex‹$\overset{\isa{v}_\isa{d}}{\Rightarrow}$› _› [60,60] 100)
notation (latex output)
direct_concurrent_steps (‹_ latex‹$\overset{\isa{v}_\isa{d}}{\Rightarrow}^{*}$› _› [60,60] 100)

notation (latex output)
sbh_concurrent_step (‹_ latex‹$\overset{\isa{sbh}}{\Rightarrow}$› _› [60,60] 100)
notation (latex output) 
sbh_concurrent_steps (‹_ latex‹$\overset{\isa{sbh}}{\Rightarrow}^{*}$› _› [60,60] 100)

notation (latex output)
sb_concurrent_step (‹_ latex‹$\overset{\isa{sb}}{\Rightarrow}$› _› [60,60] 100)
notation (latex output) 
sb_concurrent_steps (‹_ latex‹$\overset{\isa{sb}}{\Rightarrow}^{*}$› _› [60,60] 100)

notation (latex output)
virtual_concurrent_step (‹_ latex‹$\overset{\isa{v}}{\Rightarrow}$› _› [60,60] 100)
notation (latex output) 
virtual_concurrent_steps (‹_ latex‹$\overset{\isa{v}}{\Rightarrow}^{*}$› _› [60,60] 100)
end


context xvalid_program_progress
begin

abbreviation
"safe_reach_virtual_free_flowing  safe_reach virtual_concurrent_step safe_free_flowing"
notation (latex output)
"safe_reach_virtual_free_flowing" (safe'_reach)

abbreviation
"safe_reach_direct_delayed  safe_reach direct_concurrent_step safe_delayed"

notation (latex output)
"safe_reach_direct_delayed" (safe'_reach'_delayed)

end



(* hide unit's in tuples *)

translations
 "x" <= "(x,())"
 "x" <= "((),x)"


translations
"CONST initialv xs ys" <= "CONST initialv xs ys zs"


end