[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,
enrich
heap,
set-union
with
functions
. ∪ . : Heap[A] × Heap[A] → Heap[A];
. \ . : Heap[A] × Set[Ref[A]] → Heap[A];
. \ . : Heap[A] × Heap[A] → Heap[A];
dom . : Heap[A] → Set[Ref[A]];
predicates
. ⊆ . : Heap[A] × Heap[A];
. ⊥ . : Heap[A] × Heap[A];
variables
h : Heap[A];
rs : Set[Ref[A]];
r : Ref[A];
o : A;
d : A;
hP : Heap[A] → Bool;
axioms
dom: r ∈ dom h ↔ r ∈ h;
used for: s, ls;
subset: h0 ⊆ h1 ↔ (∀ r. (r ∈ h0 → r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)));
uni-emp: h0 ∪ ∅ = h0;
used for: s, ls;
uni-alloc: r ≠ null, ¬ r ∈ h1, ¬ r ∈ h0, h0 ⊥ h1 ⊦ h0 ∪ (h1 ++ r) = (h0 ∪ h1) ++ r;
used for: s, ls;
uni-write: r ≠ null, r ∈ h1, h0 ⊥ h1 ⊦ h0 ∪ h1(r := o) = (h0 ∪ h1)(r := o);
used for: ls;
diff-emp: h0 \ ∅ = h0;
used for: s, ls;
diff-alloc: r ≠ null, ¬ r ∈ h1 ⊦ h0 \ (h1 ++ r) = (h0 -- r) \ h1;
used for: s, ls;
diff-write: r ∈ h1 ⊦ h0 \ h1(r := o) = h0 \ h1;
used for: s, ls;
diffs-emp: h0 \ ∅ = h0;
used for: s, ls;
diffs-ins: h0 \ (rs ++ r) = (h0 -- r) \ rs;
used for: s, ls;
disj: h0 ⊥ h1 ↔ (∀ r. ¬ r ∈ h0 ∨ ¬ r ∈ h1);
size-emp: # ∅ = 0;
used for: s, ls;
size-alloc: ¬ r ∈ h, r ≠ null ⊦ #(h ++ r) = # h + 1;
used for: s, ls;
size-write: r ∈ h ⊦ # h(r := o) = # h;
used for: s, ls;
end enrich