[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,

Theorem base for Specification heap-sep

This is a listing of all goals defined over the current specification. Axioms are marked yellow, proved theorems green and unproved theorems blue. Click on individual names to get more information on the proof.

Name: Sequent: Type:
false ⊦ false = ⌜false⌝ An Axiom
sharing ⊦ ((hP0 ⊗ hP1))(h) ↔ (∃ h0, h1, h2. h0 ⊥ h2 ∧ h0 ⊥ h1 ∧ h1 ⊥ h2 ∧ h = h0 ∪ h1 ∪ h2 ∧ hP0(h0 ∪ h2) ∧ hP1(h1 ∪ h2)) An Axiom
ite ⊦ ite(bv, hP0, hP1) = (bv ⊃ hP0;hP1) An Axiom
not ⊦ (¬ hP0)(h) ↔ ¬ hP0(h) An Axiom
or ⊦ ((hP0 ∨ hP1))(h) ↔ hP0(h) ∨ hP1(h) An Axiom
emp ⊦ emp(h) ↔ h = ∅ An Axiom
and ⊦ ((hP0 ∧ hP1))(h) ↔ hP0(h) ∧ hP1(h) An Axiom
prop ⊦ ⌜bv⌝ (h) ↔ bv An Axiom
sep ⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) An Axiom
precise ⊦ precise(hP) ↔ (∀ h, h0, h1, h2. hP(h) ∧ hP(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0) An Axiom
true ⊦ true = ⌜true⌝ An Axiom
Imp ⊦ hP0 ⊆ hP1 ↔ (∀ h. hP0(h) → hP1(h)) An Axiom
septract ⊦ ((hP0 -⊗ hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h ∧ h1 = h0 ∪ h ∧ hP0(h0) ∧ hP1(h1)) An Axiom
this ⊦ {h} (h0) ↔ h = h0 An Axiom
imp ⊦ ((hP0 → hP1))(h) ↔ hP0(h) → hP1(h) An Axiom
wand ⊦ ((hP0 -* hP1))(h) ↔ (∀ h1. h1 ⊥ h ∧ hP0(h1) → hP1(h1 ∪ h)) An Axiom
And-inj ⊦ hP0 = hP1 → ((hP ∧ hP0) = (hP ∧ hP1) ↔ true) A User Theorem
And-prop-inj ⊦ (⌜bv⌝ ∧ hP0) = (⌜bv⌝ ∧ hP1) ↔ bv → hP0 = hP1 A User Theorem
Eq-P ⊦ hP0 = hP1 ↔ (∀ hP, h. ((hP0 * hP))(h) ↔ ((hP1 * hP))(h)) A User Theorem
Frame ⊦ hP0 ⊆ hP1 -* hP1 * hP0 A User Theorem
Imp-frame∀ hP. hP * hP0 ⊆ hP * hP1 ⊦ hP0 ⊆ hP1 A User Theorem
Imp-from-eq ⊦ hP0 = hP1 ↔ hP0 ⊆ hP1 ∧ hP1 ⊆ hP0 A User Theorem
Imp-p ⊦ (⌜bv⌝ ∧ hP0) ⊆ (⌜bv⌝ ∧ hP1) ↔ bv → hP0 ⊆ hP1 A User Theorem
Imp-refl ⊦ hP ⊆ hP A User Theorem
Imp-trans ⊦ hP0 ⊆ hP1 ∧ hP1 ⊆ hP2 → hP0 ⊆ hP2 A User Theorem
Imp1 ⊦ hP0 ⊆ hP1 ∧ hP0(h) → hP1(h) A User Theorem
Imp2 ⊦ hP0 ⊆ hP1 ∧ ((hP * hP0))(h) → ((hP * hP1))(h) A User Theorem
adjunction ⊦ (∀ h. ((hP0 → hP1 -* hP2))(h)) ↔ (∀ h. ((hP0 * hP1 → hP2))(h)) A User Theorem
and-ass ⊦ ((hP0 ∧ hP1) ∧ hP2) = (hP0 ∧ hP1 ∧ hP2) A User Theorem
and-com ⊦ (hP0 ∧ hP1) = (hP1 ∧ hP0) A User Theorem
and-combineprecise(P0) ⊦ H ⊥ H0 ∧ P0(H0) ∧ P1(H0) → (((P * (P0 ∧ P1)))(H ∪ H0) ↔ P(H)) A User Theorem
and-imp ⊦ ((hP * (hP1 ∧ hP2)))(h) → ((hP * hP1))(h) A User Theorem
and-splitprecise(hP) ⊦ ((hP * (hP0 ∧ hP1)))(h) ↔ ((hP * hP0))(h) ∧ ((hP * hP1))(h) A User Theorem
and-weaken∀ h. ((hP1 → hP0))(h) ⊦ (hP0 ∧ hP1) = hP1 A User Theorem
and-weaken-this((hP1 → hP0))(h) ⊦ ((hP0 ∧ hP1))(h) ↔ hP1(h) A User Theorem
contract-wand ⊦ hP0 * (hP0 -* hP1) = (hP0 * (hP0 -* hP1) ∧ hP1) A User Theorem
emp-sep ⊦ emp * hP = hP A User Theorem
eq-frame∀ hP. hP * hP0 = hP * hP1 ⊦ hP0 = hP1 A User Theorem
false-Imp ⊦ false ⊆ hP A User Theorem
false-and ⊦ (false ∧ hP) = false A User Theorem
false-rev ⊦ ⌜false⌝ = false A User Theorem
false-sep ⊦ false * hP = false A User Theorem
falseH ⊦ ¬ false(h) A User Theorem
imp-cases ⊦ bv → (⌜bv⌝ → hP) = hP A User Theorem
imp-ite ⊦ (⌜bv0⌝ → ite(bv, hP0, hP1)) = ite(bv0 → bv, ⌜bv0⌝ → hP0, ⌜bv0⌝ → hP1) A User Theorem
imp-mono∀ h. hP(h) → hP0(h), ((hP * hP1))(h0) ⊦ ((hP0 * hP1))(h0) A User Theorem
imp-propfalse ⊦ (false → hP) = true A User Theorem
imp-proptrue ⊦ (true → hP) = hP A User Theorem
introduce-sharing ⊦ ((hP0 ⊗ hP1))(h) ↔ (∃ hP. (((hP -* hP0) * (hP -* hP1) * hP))(h)) A User Theorem
ite-false ⊦ ite(false, hP0, hP1) = hP1 A User Theorem
ite-same ⊦ ite(bv, hP, hP) = hP A User Theorem
ite-true ⊦ ite(true, hP0, hP1) = hP0 A User Theorem
or-ass ⊦ ((hP0 ∨ hP1) ∨ hP2) = (hP0 ∨ hP1 ∨ hP2) A User Theorem
or-com ⊦ (hP0 ∨ hP1) = (hP1 ∨ hP0) A User Theorem
p-Imp ⊦ (⌜bv⌝ ∧ hP0) ⊆ hP1 ↔ bv → hP0 ⊆ hP1 A User Theorem
precise-alt-def ⊦ precise(hP) ↔ (∀ h, h0, h1. h0 ⊆ h ∧ h1 ⊆ h ∧ hP(h0) ∧ hP(h1) → h0 = h1) A User Theorem
precise-and ⊦ precise(hP0) → precise(hP0 ∧ hP1) A User Theorem
precise-disjprecise(hP0), precise(hP1) ⊦ ((hP0 * hP1 * true))(h0 ∪ h2) ∧ h0 ∪ h2 = h1 ∪ h3 ∧ h0 ⊥ h2 ∧ h1 ⊥ h3 ∧ hP0(h0) ∧ hP1(h1) → h0 ⊥ h1 A User Theorem
precise-emp ⊦ precise(emp) A User Theorem
precise-sameprecise(hP) ⊦ hP(h0) ∧ hP(h1) ∧ h0 ⊥ h ∧ h1 ⊥ h2 → (h0 ∪ h = h1 ∪ h2 ↔ h0 = h1 ∧ h = h2) A User Theorem
precise-sep ⊦ precise(hP0) ∧ precise(hP1) → precise(hP0 * hP1) A User Theorem
precise-split-lprecise(hP0) ⊦ hP0(h0) ∧ h0 ⊥ h1 → (((hP0 * hP1))(h0 ∪ h1) ↔ hP1(h1)) A User Theorem
precise-split-rprecise(hP1) ⊦ hP1(h1) ∧ h0 ⊥ h1 → (((hP0 * hP1))(h0 ∪ h1) ↔ hP0(h0)) A User Theorem
precise-this ⊦ precise({h} ) A User Theorem
prop-emp ⊦ (((⌜bv⌝ ∧ emp) * hP))(h) ↔ bv ∧ hP(h) A User Theorem
prop-sep ⊦ (((⌜bv⌝ ∧ hP0) * hP1))(h) ↔ bv ∧ ((hP0 * hP1))(h) A User Theorem
prop-shift ⊦ (⌜bv⌝ ∧ hP0) * hP1 = (⌜bv⌝ ∧ hP0 * hP1) A User Theorem
sep-ass ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2 A User Theorem
sep-com ⊦ hP0 * hP1 = hP1 * hP0 A User Theorem
sep-inj ⊦ hP0 = hP1 → hP * hP0 = hP * hP1 A User Theorem
sep-inj2 ⊦ hP0 = hP1 ∧ hP2 = hP3 → hP0 * hP2 = hP1 * hP3 A User Theorem
sep-inj2-imp ⊦ hP0 ⊆ hP1 ∧ hP2 ⊆ hP3 → hP0 * hP2 ⊆ hP1 * hP3 A User Theorem
sep-inj3 ⊦ hP0 = hP1 ∧ hP2 = hP3 ∧ hP4 = hP5 → hP0 * hP2 * hP4 = hP1 * hP3 * hP5 A User Theorem
sep-mp ⊦ ((hP0 * (hP0 -* hP1)))(h) → hP1(h) A User Theorem
sep-mp-p ⊦ ((hP0 * (hP0 -* hP1) * hP2))(h) → ((hP1 * hP2))(h) A User Theorem
sep-mp-subset ⊦ hP0 * (hP0 -* hP1) ⊆ hP1 A User Theorem
sep-partial-mp ⊦ ((hP0 * (hP0 * hP2 -* hP1)))(h) → ((hP2 -* hP1))(h) A User Theorem
sep-partial-mp-2 ⊦ ((hP0 * hP * (hP0 * hP2 -* hP1)))(h) → ((hP * (hP2 -* hP1)))(h) A User Theorem
sep-split-interactive ⊦ ∀ hP0. ((hP * hP0))(h) → (∃ h0, h1. h0 ⊥ h1 ∧ h0 ∪ h1 = h ∧ hP(h0) ∧ hP0(h1)) A User Theorem
septract-dual ⊦ hP0 -* hP1 = ¬(hP0 -⊗ ¬ hP1) A User Theorem
septract-given ⊦ precise(P0) → P0 -⊗ P0 * P1 ⊆ P1 A User Theorem
sharing-com ⊦ hP0 ⊗ hP1 = hP1 ⊗ hP0 A User Theorem
sharing-emp ⊦ hP ⊗ emp = hP A User Theorem
split-union ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1) A User Theorem
stability((hP0 * {h} ))(h0), ((hP1 * {h} ))(h1), (hP0 -⊗ hP) * hP1 ⊆ hP ⊦ hP(h0) → hP(h1) A User Theorem
this-emp ⊦ {∅} = emp A User Theorem
true-and ⊦ (true ∧ hP) = hP A User Theorem
true-elim ⊦ ((hP0 * hP))(h) → ((true * hP))(h) A User Theorem
true-elims ⊦ ((hP0 ⊗ hP))(h) → ((true ⊗ hP))(h) A User Theorem
true-emp ⊦ hP(h) → ((true * hP))(h) A User Theorem
true-rev ⊦ ⌜true⌝ = true A User Theorem
true-true ⊦ true * true = true A User Theorem
trueH ⊦ true(h) A User Theorem
wand-dual ⊦ hP0 -⊗ hP1 = ¬(hP0 -* ¬ hP1) A User Theorem
wand-flatten ⊦ hP0 -* hP1 -* hP2 = hP0 * hP1 -* hP2 A User Theorem
wand-same-emp ⊦ ((hP -* hP))(∅) A User Theorem
wand-same-emp-p ⊦ hP0(h) → (((hP -* hP) * hP0))(h) A User Theorem
wand-shift ⊦ ((hP0 * (hP1 -* hP2)))(h) → ((hP1 -* hP0 * hP2))(h) A User Theorem
wand-shift-p ⊦ ((hP0 * (hP1 -* hP2) * hP))(h) → (((hP1 -* hP0 * hP2) * hP))(h) A User Theorem