| ⊦ modify*(rs)(h0, h1) ↔ modify*(rs)(h1, h0) |
¬(modify*(rs)(h0, h1) ↔ modify*(rs)(h1, h0)) ⊦
| ¬(modify*(rs)(h0, h1) ↔ modify*(rs)(h1, h0)) ⊦ |
modify*(rs)(h0, h1), ¬ modify*(rs)(h1, h0) ⊦
modify*(rs)(h1, h0), ¬ modify*(rs)(h0, h1) ⊦
| modify*(rs)(h0, h1), ¬ modify*(rs)(h1, h0) ⊦ |
⊦ modify*(rs)(h0, h1) ↔ modify(rs) ^*(h0, h1)
modify*(rs)(h0, h1), ¬ modify(rs) ^*(h1, h0) ⊦
Used terms: h0, h1, rs
| ⊦ modify*(rs)(h0, h1) ↔ modify(rs) ^*(h0, h1) |
| modify*(rs)(h0, h1), ¬ modify(rs) ^*(h1, h0) ⊦ |
⊦ modify*(rs)(h0, h1) ↔ modify(rs) ^*(h0, h1)
modify(rs) ^*(h0, h1), ¬ modify(rs) ^*(h1, h0) ⊦
Used terms: h1, h0, rs
| ⊦ modify*(rs)(h0, h1) ↔ modify(rs) ^*(h0, h1) |
| modify(rs) ^*(h0, h1), ¬ modify(rs) ^*(h1, h0) ⊦ |
⊦ pelem ^*(a, b) ↔ (∃ n. rtc(n, pelem)(a, b))
¬ modify(rs) ^*(h1, h0), ∃ n. rtc(n, modify(rs))(h0, h1) ⊦
Used terms: h1, h0, modify(rs)
| ⊦ pelem ^*(a, b) ↔ (∃ n. rtc(n, pelem)(a, b)) |
| ¬ modify(rs) ^*(h1, h0), ∃ n. rtc(n, modify(rs))(h0, h1) ⊦ |
rtc(n, modify(rs))(h0, h1), ¬ modify(rs) ^*(h1, h0) ⊦
| rtc(n, modify(rs))(h0, h1), ¬ modify(rs) ^*(h1, h0) ⊦ |
⊦ pelem ^*(a, b) ↔ (∃ n. rtc(n, pelem)(a, b))
rtc(n, modify(rs))(h0, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
Used terms: h0, h1, modify(rs)
| ⊦ pelem ^*(a, b) ↔ (∃ n. rtc(n, pelem)(a, b)) |
| rtc(n, modify(rs))(h0, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
rtc(0, modify(rs))(h0, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
rtc(n0 +1, modify(rs))(h0, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ∀ rs, h0, h1. ¬(rtc(n0, modify(rs))(h0, h1) ∧ (∀ n. ¬ rtc(n, modify(rs))(h1, h0))) ⊦
Used simplifier rules: nat freely generated by 0, +1;;
| rtc(0, modify(rs))(h0, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
⊦ rtc(0, pelem)(a, b) ↔ a = b
h0 = h1, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
Used terms: modify(rs), h0, h1
| ⊦ rtc(0, pelem)(a, b) ↔ a = b |
| h0 = h1, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
h0 = h1, ¬ rtc(0, modify(rs))(h1, h0) ⊦
Used terms: 0
| h0 = h1, ¬ rtc(0, modify(rs))(h1, h0) ⊦ |
⊦ rtc(0, pelem)(a, b) ↔ a = b
Used terms: modify(rs), h1, h0
| ⊦ rtc(0, pelem)(a, b) ↔ a = b |
| rtc(n0 +1, modify(rs))(h0, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ∀ rs, h0, h1. ¬(rtc(n0, modify(rs))(h0, h1) ∧ (∀ n. ¬ rtc(n, modify(rs))(h1, h0))) ⊦ |
rtc(n0 + 1, modify(rs))(h0, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ ¬(∀ n. ¬ rtc(n, modify(rs0))(h2, h)) ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s)
| rtc(n0 + 1, modify(rs))(h0, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ ¬(∀ n. ¬ rtc(n, modify(rs0))(h2, h)) ⊦ |
⊦ rtc(n + 1, pelem)(a, b) ↔ (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b))
∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ ¬(∀ n. ¬ rtc(n, modify(rs0))(h2, h)), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ∃ c. modify(rs)(h0, c) ∧ rtc(n0, modify(rs))(c, h1) ⊦
Used terms: n0, modify(rs), h0, h1
| ⊦ rtc(n + 1, pelem)(a, b) ↔ (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) |
| ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ ¬(∀ n. ¬ rtc(n, modify(rs0))(h2, h)), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ∃ c. modify(rs)(h0, c) ∧ rtc(n0, modify(rs))(c, h1) ⊦ |
modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ ¬(∀ n. ¬ rtc(n, modify(rs0))(h2, h)) ⊦
| modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ ¬(∀ n. ¬ rtc(n, modify(rs0))(h2, h)) ⊦ |
modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ¬ rtc(n0, modify(rs))(h, h1) ∨ ¬(∀ n. ¬ rtc(n, modify(rs))(h1, h)) ⊦
Used terms: rs, h, h1
| modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ¬ rtc(n0, modify(rs))(h, h1) ∨ ¬(∀ n. ¬ rtc(n, modify(rs))(h1, h)) ⊦ |
modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), rtc(n, modify(rs))(h1, h), ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
| modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), rtc(n, modify(rs))(h1, h), ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r)
rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h = h0 -- r) ⊦
Used terms: rs, h0, h
| ⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r) |
| rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h = h0 -- r) ⊦ |
rtc(n0, modify(rs))(h, h1), rtc(n, modify(rs))(h1, h), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h = h0 ++ r ∨ ¬ r0 ∈ rs ∧ r0 ∈ h0 ∧ h = h0[r0, o] ∨ ¬ r1 ∈ rs ∧ r1 ∈ h0 ∧ h = h0 -- r1 ⊦
| rtc(n0, modify(rs))(h, h1), rtc(n, modify(rs))(h1, h), ∀ n. ¬ rtc(n, modify(rs))(h1, h0), ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h = h0 ++ r ∨ ¬ r0 ∈ rs ∧ r0 ∈ h0 ∧ h = h0[r0, o] ∨ ¬ r1 ∈ rs ∧ r1 ∈ h0 ∧ h = h0 -- r1 ⊦ |
h = h0 ++ r, r ≠ null, rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), ¬ r ∈ h0, ¬ r ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
h = h0[r0, o], rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), r0 ∈ h0, ¬ r0 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
h = h0 -- r1, rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
| h = h0 ++ r, r ≠ null, rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), ¬ r ∈ h0, ¬ r ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
| r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ rtc(n + 1, modify(rs))(h1, h0), ¬ r ∈ h0, ¬ r ∈ rs ⊦
Used terms: n + 1
| r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ rtc(n + 1, modify(rs))(h1, h0), ¬ r ∈ h0, ¬ r ∈ rs ⊦ |
⊦ n ≠ 0 → (rtc(n, pelem)(a, b) ↔ (∃ c. rtc(n - 1, pelem)(a, c) ∧ pelem(c, b)))
n + 1 ≠ 0, r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ∀ c. ¬(rtc(n + 1 - 1, modify(rs))(h1, c) ∧ modify(rs)(c, h0)) ⊦
Used simplifier rules: ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n + 1, modify(rs), h1, h0
| ⊦ n ≠ 0 → (rtc(n, pelem)(a, b) ↔ (∃ c. rtc(n - 1, pelem)(a, c) ∧ pelem(c, b))) |
| n + 1 ≠ 0, r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ∀ c. ¬(rtc(n + 1 - 1, modify(rs))(h1, c) ∧ modify(rs)(c, h0)) ⊦ |
r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ r ∈ h0, ¬ r ∈ rs, ∀ c. ¬ rtc(n, modify(rs))(h1, c) ∨ ¬ modify(rs)(c, h0) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m + 1 ≠ 0; (s)
| r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ r ∈ h0, ¬ r ∈ rs, ∀ c. ¬ rtc(n, modify(rs))(h1, c) ∨ ¬ modify(rs)(c, h0) ⊦ |
r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h1, h0 ++ r) ∨ ¬ modify(rs)(h0 ++ r, h0) ⊦
Used terms: h0 ++ r
| r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h1, h0 ++ r) ∨ ¬ modify(rs)(h0 ++ r, h0) ⊦ |
r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ modify(rs)(h0 ++ r, h0), ¬ r ∈ h0, ¬ r ∈ rs ⊦
| r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ modify(rs)(h0 ++ r, h0), ¬ r ∈ h0, ¬ r ∈ rs ⊦ |
⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r)
r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ∀ r0. ¬(¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h0 ++ r ∧ h0 = h0 ++ r ++ r0), ∀ r0, o. ¬(¬ r0 ∈ rs ∧ r0 ∈ h0 ++ r ∧ h0 = (h0 ++ r)[r0, o]), ∀ r0. ¬(¬ r0 ∈ rs ∧ r0 ∈ h0 ++ r ∧ h0 = (h0 ++ r) -- r0) ⊦
Used terms: rs, h0 ++ r, h0
| ⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r) |
| r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ∀ r0. ¬(¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h0 ++ r ∧ h0 = h0 ++ r ++ r0), ∀ r0, o. ¬(¬ r0 ∈ rs ∧ r0 ∈ h0 ++ r ∧ h0 = (h0 ++ r)[r0, o]), ∀ r0. ¬(¬ r0 ∈ rs ∧ r0 ∈ h0 ++ r ∧ h0 = (h0 ++ r) -- r0) ⊦ |
r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ r ∈ h0, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ r0 ≠ r ∧ ¬ r0 ∈ h0 ∨ h0 ≠ (h0 ++ r) -- r0, ∀ r0, o. r0 ∈ rs ∨ r0 ≠ r ∧ ¬ r0 ∈ h0 ∨ h0 ≠ (h0 ++ r)[r0, o], ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 = r ∨ r0 ∈ h0 ∨ h0 ≠ h0 ++ r ++ r0 ⊦
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s)
| r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ r ∈ h0, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ r0 ≠ r ∧ ¬ r0 ∈ h0 ∨ h0 ≠ (h0 ++ r) -- r0, ∀ r0, o. r0 ∈ rs ∨ r0 ≠ r ∧ ¬ r0 ∈ h0 ∨ h0 ≠ (h0 ++ r)[r0, o], ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 = r ∨ r0 ∈ h0 ∨ h0 ≠ h0 ++ r ++ r0 ⊦ |
Used simplifier rules: ¬ r ∈ h, r ≠ null ⊦ (h ++ r) -- r = h; (s) Used terms: r
| h = h0[r0, o], rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), r0 ∈ h0, ¬ r0 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
| rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ rtc(n + 1, modify(rs))(h1, h0), ¬ r0 ∈ rs ⊦
Used terms: n + 1
| rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ rtc(n + 1, modify(rs))(h1, h0), ¬ r0 ∈ rs ⊦ |
⊦ n ≠ 0 → (rtc(n, pelem)(a, b) ↔ (∃ c. rtc(n - 1, pelem)(a, c) ∧ pelem(c, b)))
n + 1 ≠ 0, rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ∀ c. ¬(rtc(n + 1 - 1, modify(rs))(h1, c) ∧ modify(rs)(c, h0)) ⊦
Used simplifier rules: ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n + 1, modify(rs), h1, h0
| ⊦ n ≠ 0 → (rtc(n, pelem)(a, b) ↔ (∃ c. rtc(n - 1, pelem)(a, c) ∧ pelem(c, b))) |
| n + 1 ≠ 0, rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ∀ c. ¬(rtc(n + 1 - 1, modify(rs))(h1, c) ∧ modify(rs)(c, h0)) ⊦ |
rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ r0 ∈ rs, ∀ c. ¬ rtc(n, modify(rs))(h1, c) ∨ ¬ modify(rs)(c, h0) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m + 1 ≠ 0; (s)
| rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ r0 ∈ rs, ∀ c. ¬ rtc(n, modify(rs))(h1, c) ∨ ¬ modify(rs)(c, h0) ⊦ |
rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ¬ rtc(n, modify(rs))(h1, h0[r0, o]) ∨ ¬ modify(rs)(h0[r0, o], h0) ⊦
Used terms: h0[r0, o]
| rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ¬ rtc(n, modify(rs))(h1, h0[r0, o]) ∨ ¬ modify(rs)(h0[r0, o], h0) ⊦ |
rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ modify(rs)(h0[r0, o], h0), ¬ r0 ∈ rs ⊦
| rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ modify(rs)(h0[r0, o], h0), ¬ r0 ∈ rs ⊦ |
⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r)
rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0[r0, o] ∧ h0 = h0[r0, o] ++ r), ∀ r, o0. ¬(¬ r ∈ rs ∧ r ∈ h0[r0, o] ∧ h0 = h0[r0, o][r, o0]), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ h0[r0, o] ∧ h0 = h0[r0, o] -- r) ⊦
Used terms: rs, h0[r0, o], h0
| ⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r) |
| rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0[r0, o] ∧ h0 = h0[r0, o] ++ r), ∀ r, o0. ¬(¬ r ∈ rs ∧ r ∈ h0[r0, o] ∧ h0 = h0[r0, o][r, o0]), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ h0[r0, o] ∧ h0 = h0[r0, o] -- r) ⊦ |
rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ r0 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0[r0, o] -- r, ∀ r, o0. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0[r0, o][r, o0], ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ h0[r0, o] ++ r ⊦
Used simplifier rules: ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s)
| rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ r0 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0[r0, o] -- r, ∀ r, o0. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0[r0, o][r, o0], ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ h0[r0, o] ++ r ⊦ |
rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ h0[r0, o] ++ r, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0[r0, o] -- r, r0 ∈ rs ∨ ¬ r0 ∈ h0 ∨ h0 ≠ h0[r0, o][r0, h0[r0]] ⊦
Used terms: r0, h0[r0]
| rtc(n0, modify(rs))(h0[r0, o], h1), rtc(n, modify(rs))(h1, h0[r0, o]), r0 ∈ h0, ¬ r0 ∈ rs, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ h0[r0, o] ++ r, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0[r0, o] -- r, r0 ∈ rs ∨ ¬ r0 ∈ h0 ∨ h0 ≠ h0[r0, o][r0, h0[r0]] ⊦ |
h0 ≠ h0[r0, h0[r0]], rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ r0 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0[r0, o] -- r, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ h0[r0, o] ++ r ⊦
Used simplifier rules: ⊦ h[r, o0][r, o1] = h[r, o1]; (s)
| h0 ≠ h0[r0, h0[r0]], rtc(n, modify(rs))(h1, h0[r0, o]), rtc(n0, modify(rs))(h0[r0, o], h1), r0 ∈ h0, ¬ r0 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0[r0, o] -- r, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ h0[r0, o] ++ r ⊦ |
r ∈ h ⊦ h[r] = o → h[r, o] = h
Used terms: h0, r0, h0[r0]
| r ∈ h ⊦ h[r] = o → h[r, o] = h |
| h = h0 -- r1, rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
| rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ rtc(n + 2, modify(rs))(h1, h0), ¬ r1 ∈ rs ⊦
Used terms: n + 2
| rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ rtc(n + 2, modify(rs))(h1, h0), ¬ r1 ∈ rs ⊦ |
⊦ n ≠ 0 → (rtc(n, pelem)(a, b) ↔ (∃ c. rtc(n - 1, pelem)(a, c) ∧ pelem(c, b)))
n + 2 ≠ 0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ c. ¬(rtc(n + 2 - 1, modify(rs))(h1, c) ∧ modify(rs)(c, h0)) ⊦
Used simplifier rules: ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n + 2, modify(rs), h1, h0
| ⊦ n ≠ 0 → (rtc(n, pelem)(a, b) ↔ (∃ c. rtc(n - 1, pelem)(a, c) ∧ pelem(c, b))) |
| n + 2 ≠ 0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ c. ¬(rtc(n + 2 - 1, modify(rs))(h1, c) ∧ modify(rs)(c, h0)) ⊦ |
rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ c. ¬ rtc(1 + n, modify(rs))(h1, c) ∨ ¬ modify(rs)(c, h0) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) n < n0 ⊦ (* n) ≠ m0 + (* n0); (s)
| rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ c. ¬ rtc(1 + n, modify(rs))(h1, c) ∨ ¬ modify(rs)(c, h0) ⊦ |
rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ¬ rtc(1 + n, modify(rs))(h1, (h0 -- r1) ++ r1) ∨ ¬ modify(rs)((h0 -- r1) ++ r1, h0) ⊦
Used terms: (h0 -- r1) ++ r1
| rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ¬ rtc(1 + n, modify(rs))(h1, (h0 -- r1) ++ r1) ∨ ¬ modify(rs)((h0 -- r1) ++ r1, h0) ⊦ |
rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ rtc(1 + n, modify(rs))(h1, (h0 -- r1) ++ r1), ¬ r1 ∈ rs ⊦
rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ modify(rs)((h0 -- r1) ++ r1, h0), ¬ r1 ∈ rs ⊦
| rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ rtc(1 + n, modify(rs))(h1, (h0 -- r1) ++ r1), ¬ r1 ∈ rs ⊦ |
⊦ n ≠ 0 → (rtc(n, pelem)(a, b) ↔ (∃ c. rtc(n - 1, pelem)(a, c) ∧ pelem(c, b)))
1 + n ≠ 0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ c. ¬(rtc(1 + n - 1, modify(rs))(h1, c) ∧ modify(rs)(c, (h0 -- r1) ++ r1)) ⊦
Used simplifier rules: ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: 1 + n, modify(rs), h1, (h0 -- r1) ++ r1
| ⊦ n ≠ 0 → (rtc(n, pelem)(a, b) ↔ (∃ c. rtc(n - 1, pelem)(a, c) ∧ pelem(c, b))) |
| 1 + n ≠ 0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ c. ¬(rtc(1 + n - 1, modify(rs))(h1, c) ∧ modify(rs)(c, (h0 -- r1) ++ r1)) ⊦ |
rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ c. ¬ rtc(n, modify(rs))(h1, c) ∨ ¬ modify(rs)(c, (h0 -- r1) ++ r1) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m + 1 ≠ 0; (s)
| rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ c. ¬ rtc(n, modify(rs))(h1, c) ∨ ¬ modify(rs)(c, (h0 -- r1) ++ r1) ⊦ |
rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ¬ rtc(n, modify(rs))(h1, h0 -- r1) ∨ ¬ modify(rs)(h0 -- r1, (h0 -- r1) ++ r1) ⊦
Used terms: h0 -- r1
| rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ¬ rtc(n, modify(rs))(h1, h0 -- r1) ∨ ¬ modify(rs)(h0 -- r1, (h0 -- r1) ++ r1) ⊦ |
rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ modify(rs)(h0 -- r1, (h0 -- r1) ++ r1), ¬ r1 ∈ rs ⊦
| rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ modify(rs)(h0 -- r1, (h0 -- r1) ++ r1), ¬ r1 ∈ rs ⊦ |
⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r)
rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = (h0 -- r1) ++ r), ∀ r, o. ¬(¬ r ∈ rs ∧ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = (h0 -- r1)[r, o]), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = h0 -- r1 -- r) ⊦
Used terms: rs, h0 -- r1, (h0 -- r1) ++ r1
| ⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r) |
| rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = (h0 -- r1) ++ r), ∀ r, o. ¬(¬ r ∈ rs ∧ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = (h0 -- r1)[r, o]), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = h0 -- r1 -- r) ⊦ |
rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ r = null ∨ r ≠ r1 ∧ r ∈ h0 ∨ (h0 -- r1) ++ r1 ≠ (h0 -- r1) ++ r, ∀ r. r ∈ rs ∨ r = r1 ∨ ¬ r ∈ h0 ∨ (h0 -- r1) ++ r1 ≠ h0 -- r1 -- r, ∀ r, o. r ∈ rs ∨ r = r1 ∨ ¬ r ∈ h0 ∨ (h0 -- r1) ++ r1 ≠ (h0 -- r1)[r, o] ⊦
Used simplifier rules: ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s)
| rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ r = null ∨ r ≠ r1 ∧ r ∈ h0 ∨ (h0 -- r1) ++ r1 ≠ (h0 -- r1) ++ r, ∀ r. r ∈ rs ∨ r = r1 ∨ ¬ r ∈ h0 ∨ (h0 -- r1) ++ r1 ≠ h0 -- r1 -- r, ∀ r, o. r ∈ rs ∨ r = r1 ∨ ¬ r ∈ h0 ∨ (h0 -- r1) ++ r1 ≠ (h0 -- r1)[r, o] ⊦ |
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s) Used terms: r1
| rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ modify(rs)((h0 -- r1) ++ r1, h0), ¬ r1 ∈ rs ⊦ |
⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r)
rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ (h0 -- r1) ++ r1 ∧ h0 = (h0 -- r1) ++ r1 ++ r), ∀ r, o. ¬(¬ r ∈ rs ∧ r ∈ (h0 -- r1) ++ r1 ∧ h0 = ((h0 -- r1) ++ r1)[r, o]), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ (h0 -- r1) ++ r1 ∧ h0 = ((h0 -- r1) ++ r1) -- r) ⊦
Used terms: rs, (h0 -- r1) ++ r1, h0
| ⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r) |
| rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ (h0 -- r1) ++ r1 ∧ h0 = (h0 -- r1) ++ r1 ++ r), ∀ r, o. ¬(¬ r ∈ rs ∧ r ∈ (h0 -- r1) ++ r1 ∧ h0 = ((h0 -- r1) ++ r1)[r, o]), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ (h0 -- r1) ++ r1 ∧ h0 = ((h0 -- r1) ++ r1) -- r) ⊦ |
rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∀ r, o. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1)[r, o], ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r ⊦
Used simplifier rules: ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s) r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ r ∈ h → r ≠ null; (s)
| rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∀ r, o. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1)[r, o], ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r ⊦ |
rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, r1 ∈ rs ∨ ¬ r1 ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1)[r1, h0[r1]] ⊦
Used terms: r1, h0[r1]
| rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, r1 ∈ rs ∨ ¬ r1 ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1)[r1, h0[r1]] ⊦ |
h0 ≠ ((h0 -- r1) ++ r1)[r1, h0[r1]], rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r ⊦
| h0 ≠ ((h0 -- r1) ++ r1)[r1, h0[r1]], rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∃ r. ¬((r ∈ h0 ↔ r ∈ ((h0 -- r1) ++ r1)[r1, h0[r1]]) ∧ (r ∈ h0 → h0[r] = ((h0 -- r1) ++ r1)[r1, h0[r1]][r])) ⊦
Used terms: h0, ((h0 -- r1) ++ r1)[r1, h0[r1]]
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), r1 ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∃ r. ¬((r ∈ h0 ↔ r ∈ ((h0 -- r1) ++ r1)[r1, h0[r1]]) ∧ (r ∈ h0 → h0[r] = ((h0 -- r1) ++ r1)[r1, h0[r1]][r])) ⊦ |
h0[r] ≠ (r = r1 ⊃ h0[r1];h0[r]), rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, r ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r ⊦
Used simplifier rules: r ∈ h ⊦ r ≠ r0 → (h -- r0)[r] = h[r]; (s) r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[r]; (s) ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s) ⊦ r ∈ h → r ≠ null; (s) r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ h[r0, o][r] = (r = r0 ∧ r0 ∈ h ⊃ o;h[r]); (s) ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s)
| h0[r] ≠ (r = r1 ⊃ h0[r1];h0[r]), rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), r1 ∈ h0, r ∈ h0, ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r ⊦ |
| modify*(rs)(h1, h0), ¬ modify*(rs)(h0, h1) ⊦ |
modify*(rs)(h0, h1), ¬ modify*(rs)(h1, h0) ⊦
| modify*(rs)(h0, h1), ¬ modify*(rs)(h1, h0) ⊦ |
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.