[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 separation-rg
enrich maplet , 
       gownership with
   functions 
      ! : id × (ref → id) × (heap → bool) → heap → bool;
       . * . : (heap × heap → bool) × (heap × heap → bool) → heap × heap → bool prio 10;
      ↑ . : (heap → bool) → heap × heap → bool;
      ↓ . : (heap → bool) → heap × heap → bool;
   predicates 
      rely : id × (ref → id) × heap × (ref → id) × heap;
      guar : id × (ref → id) × heap × (ref → id) × heap;
   variables 
      me : id; 
      O0, O1, O2 : ref → id; 
      R, R0, R1, R2 : heap × heap → bool; 
      Q : heap → bool; 
      H3, H4, H5 : heap; 
   
   axioms 
      old :  ⊦ (↓ P)(H0, H1) ↔ P(H0);
      new :  ⊦ (↑ P)(H0, H1) ↔ P(H1);
      used for : s, ls;
       
      sep :  ⊦ (R0 * R1)(H0, H1) ↔ (∃ H2, H3, H4, H5. H2 ⊥ H3 ∧ H4 ⊥ H5 ∧ H2 ∪ H3 = H0 ∧ H4 ∪ H5 = H1 ∧ R0(H2, H4) ∧ R1(H3, H5));
      rely :  ⊦ rely(me, O1, H1, O2, H2) ↔ (∀ r. (O1(r) = me ↔ O2(r) = me) ∧ (O1(r) = me → (r ∈ H1 ↔ r ∈ H2) ∧ (r ∈ H1 → H1[r] = H2[r])));
      guar :  ⊦ guar(me, O1, H1, O2, H2) ↔ (∀ id. id ≠ me → rely(id, O1, H1, O2, H2));
      owned :  ⊦ !(id, O, P)(H) ↔ P(H) ∧ (∀ r. r ∈ H → O(r) = id);
end enrich