[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-sep
enrich
   heap
with
   functions  . * . : (heap → bool) × (heap → bool) → heap → bool prio 10 right;
              . ⊗ . : (heap → bool) × (heap → bool) → heap → bool prio 10 right;
              . -* . : (heap → bool) × (heap → bool) → heap → bool;
              . -⊗ . : (heap → bool) × (heap → bool) → heap → bool;
              not . : (heap → bool) → heap → bool;
              . and . : (heap → bool) × (heap → bool) → heap → bool prio 4 right;
              . or . : (heap → bool) × (heap → bool) → heap → bool prio 3 right;
              . -> . : (heap → bool) × (heap → bool) → heap → bool prio 2 right;
              ⌜ . ⌝ : bool → heap → bool;
              { . } : heap → heap → bool;
              ite : bool × (heap → bool) × (heap → bool) → heap → bool;
   predicates  emp : heap;
               true : heap;
               false : heap;
               precise : (heap → bool);
               . ⊆ . : (heap → bool) × (heap → bool);
   variables  hP : heap → bool;
              bv : bool;
              h : heap;
   axioms 
      ite :  ⊦ ite(bv, hP0, hP1) = (bv ⊃ hP0;hP1);
      used for: ls;
      emp :  ⊦ emp(h) ↔ h = ∅;
      used for: s, ls;
      true :  ⊦ true = ⌜true⌝ ;
      used for: ls;
      false :  ⊦ false = ⌜false⌝ ;
      used for: ls;
      sep :  ⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1));
      sharing :  ⊦ ((hP0 ⊗ hP1))(h) ↔ (∃ h0, h1, h2. h0 ⊥ h2 ∧ h0 ⊥ h1 ∧ h1 ⊥ h2 ∧ h = h0 ∪ h1 ∪ h2 ∧ hP0(h0 ∪ h2) ∧ hP1(h1 ∪ h2));
      wand :  ⊦ ((hP0 -* hP1))(h) ↔ (∀ h1. h1 ⊥ h ∧ hP0(h1) → hP1(h1 ∪ h));
      septract :  ⊦ ((hP0 -⊗ hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h ∧ h1 = h0 ∪ h ∧ hP0(h0) ∧ hP1(h1));
      not :  ⊦ (¬ hP0)(h) ↔ ¬ hP0(h);
      used for: s, ls;
      and :  ⊦ ((hP0 ∧ hP1))(h) ↔ hP0(h) ∧ hP1(h);
      used for: s, ls;
      or :  ⊦ ((hP0 ∨ hP1))(h) ↔ hP0(h) ∨ hP1(h);
      used for: s, ls;
      imp :  ⊦ ((hP0 → hP1))(h) ↔ hP0(h) → hP1(h);
      used for: s, ls;
      prop :  ⊦ ⌜bv⌝ (h) ↔ bv;
      used for: s, ls;
      this :  ⊦ {h} (h0) ↔ h = h0;
      used for: s, ls;
      precise :  ⊦ precise(hP) ↔ (∀ h, h0, h1, h2. hP(h) ∧ hP(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0);
      Imp :  ⊦ hP0 ⊆ hP1 ↔ (∀ h. hP0(h) → hP1(h));

   
end enrich