[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 path-reachable

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:
add-preserves-reachable-rev⊦ (h(r1)).nxt = (h(r2)).nxt ∧ r0 ≠ r2 ∧ ce.nxt = r2 ∧ ¬ reachable(r, r0, h) ∧ ¬ reachable(r, r2, h) ∧ r2 ≠ null ∧ r2 ∈ h ∧ reachable(r, r1, h) → (reachable(r, r0, h(r1 := ce)) ↔ false) A User Theorem
reach-n-splitreachable-n(h, n, r, r0), m < n ⊦ ∃ r1. reachable-n(h, m, r, r1) ∧ reachable-n(h, n - m, r1, r0) A User Theorem
path-transpath(x, h) ∧ x.last = r ∧ path(r ' + y, h) ⊦ path(x + y, h) A User Theorem
k-path⊦ path(x, h) ↔ # x = 1 ∧ hd x ∈ h ∧ hd x ≠ null ∨ # x = 1 + 1 ∧ hd x ∈ h ∧ hd tl x ∈ h ∧ hd x ≠ null ∧ hd tl x ≠ null ∧ (h(hd x)).nxt = hd tl x ∨ # x ≥ 1 + 1 ∧ hd x ∈ h ∧ hd x ≠ null ∧ (h(hd x)).nxt = hd tl x ∧ path(tl x, h) A User Theorem
path-last ⊦ path(r ' + x, h) → ((r ' + x).last ∈ h ↔ true) A User Theorem
reachable-n-rec-rev ⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, r0)) A User Theorem
path-butlast ⊦ path(r ' + x + r0 ', h) → (path(r ' + x, h) ↔ true) A User Theorem
path-empty ⊦ ¬ path([], h) An Axiom
notnull-reachable ⊦ ¬ reachable(null, r1, h) A User Theorem
reachable-split-first ⊦ r ≠ r0 → (reachable(r, r0, h) ↔ r ≠ null ∧ r ∈ h ∧ (∃ r1. (h(r)).nxt = r1 ∧ r1 ∈ h ∧ r1 ≠ null ∧ reachable(r1, r0, h))) A User Theorem
linearity-pathpath(r ' + x, h), path(r ' + y, h) ⊦ x = y ∨ (∃ r0, y0. x = y + r0 ' + y0) ∨ (∃ r0, x0. y = x + r0 ' + x0) A User Theorem
reachable-1-def ⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ (h(r)).nxt = r0 An Axiom
reachable-n-rec ⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-1(h, r, r1) ∧ reachable-n(h, n, r1, r0)) An Axiom
reachnext ⊦ reachable(r0, (h(r0)).nxt, h) ↔ r0 ≠ null ∧ r0 ∈ h ∧ (h(r0)).nxt ∈ h ∧ (h(r0)).nxt ≠ null A User Theorem
reachable-n-trans ⊦ reachable-n(h, n, r, r0) ∧ reachable-n(h, n0, r0, r1) → (reachable-n(h, n + n0, r, r1) ↔ true) A User Theorem
reach-n-unique ⊦ reachable-n(h, n, r, r0) ∧ reachable-n(h, n, r, r1) → r0 = r1 A User Theorem
frommodified ⊦ r ≠ null ∧ ce.nxt ≠ r → (reachable(r, r0, h(r := ce)) ↔ r = r0 ∨ ce.nxt ≠ null ∧ ce.nxt ∈ h ∧ reachable(ce.nxt, r0, h(r := ce))) A User Theorem
reachable-trans ⊦ reachable(r, r0, h) ∧ reachable(r0, r1, h) → reachable(r, r1, h) A User Theorem
changenonnxt-reachable ⊦ reachable(r, r0, h) ∧ ce.nxt = (h(r1)).nxt → (reachable(r, r0, h(r1 := ce)) ↔ true) A User Theorem
path-prelast ⊦ path(r ' + x + r0 ', h) → ((r ' + x).last ∈ h ↔ true) A User Theorem
reachable-n-rec2 ⊦ reachable-n(h, 2, r, r0) ↔ reachable-1(h, r, (h(r)).nxt) ∧ reachable-1(h, (h(r)).nxt, r0) A User Theorem
null-not-start-of-path ⊦ ¬ path(null ' + x, h) A User Theorem
modnotreachable-reachable ⊦ reachable(r, r0, h) ∧ ¬ reachable(r, r1, h) → (reachable(r, r0, h(r1 := ce)) ↔ true) A User Theorem
rem-stays-reachable-auxreachable(r, r0, h), (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt, ce.nxt = (h((h(r0)).nxt)).nxt ⊦ reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ (h((h(r0)).nxt)).nxt = (h(r0)).nxt ∨ r ≠ r0 ∧ r = (h(r0)).nxt ∨ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) A User Theorem
reachable-n-1 ⊦ reachable-n(h, 1, r, r0) ↔ reachable-1(h, r, r0) A User Theorem
null-not-reachable ⊦ ¬ reachable(r, null, h) A User Theorem
path-two ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0 An Axiom
modnotreachable-reachable-weak ⊦ ¬ reachable(r, r0, H) ∧ reachable(r, r1, H) ∧ r0 ≠ null ∧ r0 ∈ H → (reachable(r, r1, H(r0 := ce)) ↔ true) A User Theorem
path-split-last ⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null A User Theorem
path-first-in-H ⊦ path(r ' + x, h) → (r ∈ h ↔ true) A User Theorem
path-new-irrelevant-strong ⊦ ¬ r2 ∈ h ∧ ¬ r2 ∈ x ∧ r ∈ h → (path(r ' + x, h(r2 := ce)) ↔ path(r ' + x, h)) A User Theorem
modified-stays-reachable ⊦ reachable(r, r0, h) → (reachable(r, r0, h(r0 := ce)) ↔ true) A User Theorem
reachable-notnullinH ⊦ reachable(r, r1, h) ∧ r1 ≠ null → (r1 ∈ h ↔ true) A User Theorem
reachable-def ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) An Axiom
rem-reachable-rev-weak⊦ reachable(r, r0, H(r1 := ce)) ∧ ce.nxt = (H((H(r1)).nxt)).nxt ∧ r0 ≠ (H(r1)).nxt ∧ (H(r1)).nxt ∈ H ∧ (H(r1)).nxt ≠ null ∧ r1 ≠ null ∧ r1 ∈ H → (reachable(r, r0, H) ↔ true) A User Theorem
reachable-addnew-rev⊦ ¬ r2 ∈ h ∧ r ∈ h ∧ ¬ reachable(r, r1, h) → (reachable(r, r1, h(r2 := ce)) ↔ (∃ r0. reachable(r, r0, h) ∧ (h(r0)).nxt = r2 ∧ r2 ≠ null ∧ (r1 = r2 ∨ reachable(ce.nxt, r1, h)))) A User Theorem
fromnext-reachable-rev ⊦ reachable((h(r)).nxt, r0, h) ∧ r ≠ r0 ∧ r ≠ null ∧ r ∈ h → (reachable(r, r0, h) ↔ true) A User Theorem
modified-stays-reachable-rev ⊦ r0 ∈ h ∧ reachable(r, r0, h(r0 := ce)) → (reachable(r, r0, h) ↔ true) A User Theorem
self-reachable ⊦ reachable(r, r, h) ↔ r ≠ null ∧ r ∈ h A User Theorem
fromnext-reachable ⊦ reachable(r, r0, h) ∧ r ≠ r0 → (reachable((h(r)).nxt, r0, h) ↔ true) A User Theorem
startnotinH-notreachable ⊦ ¬ r ∈ h → (reachable(r, r0, h) ↔ false) A User Theorem
reachable-star-def ⊦ reachable*(h, r, r0) ↔ (∃ n. reachable-n(h, n, r, r0)) An Axiom
path-one ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null An Axiom
path-modify ⊦ ¬ r0 ∈ x → (path(x, h(r0 := ce)) ↔ path(x, h)) A User Theorem
rem-reachable⊦ reachable(r, r0, h) ∧ ce.nxt = (h((h(r1)).nxt)).nxt ∧ r0 ≠ (h(r1)).nxt ∧ (h(r1)).nxt ∈ h ∧ (h(r1)).nxt ≠ null ∧ r1 ≠ null ∧ r1 ∈ h → (reachable(r, r0, h(r1 := ce)) ↔ true) A User Theorem
k-reachable-def ⊦ reachable(r, r0, h) ↔ r ≠ null ∧ r ∈ h ∧ reachable*(h, r, r0) A User Theorem
rem-stays-reachable-aux2reachable(r, r0, h), (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h ⊦ (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) A User Theorem
reachable-addnewtonull-rev ⊦ reachable(r, r1, h(r2 := ce)) ∧ ce.nxt = null ∧ r1 ∈ h ∧ ¬ r2 ∈ h → (reachable(r, r1, h) ↔ true) A User Theorem
rem-stays-reachable-aux1r0 ∈ h, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt ⊦ reachable((h((h(r0)).nxt)).nxt, (h(r0)).nxt, h) ∧ ¬ reachable((h((h(r0)).nxt)).nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) A User Theorem
reach-reachnext ⊦ reachable(r, r1, h) → (reachable(r, (h(r1)).nxt, h) ↔ ¬((h(r1)).nxt = null ∨ ¬ (h(r1)).nxt ∈ h)) A User Theorem
path-last-nxt ⊦ path(r ' + x + r0 ', h) → ((h((r ' + x).last)).nxt = r0 ↔ true) A User Theorem
changenonnxt-reachable-rev ⊦ reachable(r, r0, h(r1 := ce)) ∧ ce.nxt = (h(r1)).nxt ∧ r1 ∈ h → (reachable(r, r0, h) ↔ true) A User Theorem
path-modify-strong ⊦ ¬ r0 ∈ x ∧ r0 ∈ h → (path(x + r1 ', h(r0 := ce)) ↔ path(x + r1 ', h)) A User Theorem
path-last-not-null ⊦ ¬ path(r ' + x + null ', h) A User Theorem
reachable-addnew ⊦ reachable(r, r1, h) ∧ ¬ r2 ∈ h → (reachable(r, r1, h(r2 := ce)) ↔ true) A User Theorem
path-prefix ⊦ path(r ' + x + y, h) → (path(r ' + x, h) ↔ true) A User Theorem
reachable-nodups-def ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x)) A User Theorem
path-delnonmember ⊦ path(x, h) ∧ ¬ r ∈ x → path(x, h -- r) A User Theorem
reachable-n-rec-strong2 ⊦ reachable-n(h, n + 2, r, r0) ↔ reachable-1(h, r, (h(r)).nxt) ∧ reachable-n(h, n + 1, (h(r)).nxt, r0) A User Theorem
add-preserves-reachable⊦ (h(r1)).nxt = (h(r2)).nxt ∧ ce.nxt = r2 ∧ reachable(r, r0, h) ∧ ¬ reachable(r, r2, h) ∧ r2 ≠ null ∧ r2 ∈ h ∧ reachable(r, r1, h) → reachable(r, r0, h(r1 := ce)) A User Theorem
linearityreachable(r, r0, h), reachable(r, r1, h) ⊦ reachable(r0, r1, h) ∨ reachable(r1, r0, h) A User Theorem
reachable-n-rec-rev2 ⊦ reachable-n(h, n + 2, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)) A User Theorem
id-reachable ⊦ (h(r)).nxt = null → (reachable(r, r0, h) ↔ r ∈ h ∧ r ≠ null ∧ r = r0) A User Theorem
reach-n-path-n ⊦ n ≠ 0 → (reachable-n(h, n, r, r0) ↔ (∃ x. path(x, h) ∧ hd x = r ∧ x.last = r0 ∧ # x = n + 1)) A User Theorem
reachable-n-base ⊦ reachable-n(h, 0, r, r0) ↔ r = r0 An Axiom
endnotinH-notreachable ⊦ ¬ r0 ∈ h → (reachable(r, r0, h) ↔ false) A User Theorem
path-cons ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h) An Axiom
reachable-split-last ⊦ r ≠ r0 → (reachable(r, r0, h) ↔ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null)) A User Theorem
reachable-modbehind ⊦ reachable(r, r0, h) ∧ reachable(r0, r1, h) ∧ ¬ reachable(r1, r0, h) → (reachable(r, r0, h(r1 := ce)) ↔ true) A User Theorem
acyclic-rem-not-reachable∀ r. r ∈ h → ¬ reachable((h(r)).nxt, r, h), reachable(r, r0, h), (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, ce.nxt = (h((h(r0)).nxt)).nxt ⊦ ¬ reachable(r, (h(r0)).nxt, h(r0 := ce)) A User Theorem
reachable-trans-simp ⊦ reachable(r, r0, h) ∧ reachable(r0, r1, h) → (reachable(r, r1, h) ↔ true) A User Theorem
reach-alloc ⊦ reachable(r, r1, h) → r1 ∈ h A User Theorem
path-postfix ⊦ path(x + r ' + y, h) → (path(r ' + y, h) ↔ true) A User Theorem
rem-reachable-rev⊦ ce.nxt = (h((h(r1)).nxt)).nxt ∧ r0 ≠ (h(r1)).nxt ∧ (h(r1)).nxt ∈ h ∧ (h(r1)).nxt ≠ null ∧ r1 ≠ null ∧ r1 ∈ h → (reachable(r, r0, h(r1 := ce)) ↔ reachable(r, r0, h)) A User Theorem
modnotreachable-reachable-rev ⊦ ¬ reachable(r, r0, h) ∧ ¬ reachable(r, r1, h) ∧ r0 ∈ h → (reachable(r, r1, h(r0 := ce)) ↔ false) A User Theorem
reach-n-split-lereachable-n(h, n, r, r0), m ≤ n ⊦ ∃ r1. reachable-n(h, m, r, r1) ∧ reachable-n(h, n - m, r1, r0) A User Theorem
removed-stays-reachable⊦ reachable(r, r0, h) ∧ (h(r0)).nxt ≠ null ∧ (h(r0)).nxt ∈ h ∧ ce.nxt = (h((h(r0)).nxt)).nxt → ( reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ (h((h(r0)).nxt)).nxt = (h(r0)).nxt ∨ r ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable((h((h(r0)).nxt)).nxt, (h(r0)).nxt, h) ∧ ¬ reachable((h((h(r0)).nxt)).nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h))) A User Theorem
reachable-n-rec-strong ⊦ reachable-n(h, n + 1, r, r0) ↔ reachable-1(h, r, (h(r)).nxt) ∧ reachable-n(h, n, (h(r)).nxt, r0) A User Theorem
modnotreachable-reachable-rev-weak ⊦ ¬ reachable(r, r0, H) ∧ ¬ reachable(r, r1, H) ∧ r0 ≠ null ∧ r0 ∈ H → (reachable(r, r1, H(r0 := ce)) ↔ false) A User Theorem