[Imprint][Data Privacy Statement][E-Mail]

Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Specification heap-mod
enrich
   relops, 
   heap, 
   heap-sep
with
   functions 
       modify : Set[Ref[A]] → Heap[A] × Heap[A] → Bool;
       modify* : Set[Ref[A]] → Heap[A] × Heap[A] → Bool;
       . ≡ . : Heap[A] × Heap[A] → Set[Ref[A]] → Bool;
   
   predicates 
       footprint : Set[Ref[A]] × (Heap[A] → Bool) × Heap[A];
   
   variables 
       h : Heap[A];
       r : Ref[A];
       rs : Set[Ref[A]];
       hP : Heap[A] → Bool;
       ob : A;
   
   
   axioms 
      modify: 
        modify(rs)(h0, h1)
      ↔   (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj))
        ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r);
      
      modify+: modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1);
      
      footprint: footprint(rs, hP, h0) ↔ (∀ h1. modify*(rs)(h0, h1) → (hP(h0) ↔ hP(h1)));
      
      agree: (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)));
   
   
end enrich