| ⊦ 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.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2))
¬ modify(rs).^*(h1, h0), ∃ n. rtc(n, modify(rs))(h0, h1) ⊦
Used terms: modify(rs), h0, h1
| ⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2)) |
| ¬ 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.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2))
rtc(n, modify(rs))(h0, h1), ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
Used terms: modify(rs), h1, h0
| ⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2)) |
| 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)(a1, a2) ↔ a1 = a2
h0 = h1, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
Used terms: modify(rs), h0, h1
| ⊦ rtc(0, pelem)(a1, a2) ↔ a1 = a2 |
| 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)(a1, a2) ↔ a1 = a2
Used terms: modify(rs), h1, h0
| ⊦ rtc(0, pelem)(a1, a2) ↔ a1 = a2 |
| 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)(a1, a2) ↔ (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2))
∃ a. modify(rs)(h0, a) ∧ rtc(n0, modify(rs))(a, 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: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: modify(rs), h0, h1, n0
| ⊦ rtc(n + 1, pelem)(a1, a2) ↔ (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) |
| ∃ a. modify(rs)(h0, a) ∧ rtc(n0, modify(rs))(a, 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), ∀ 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, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ 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, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h = h0(r := obj)) ∨ (∃ 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, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ 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, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h = h0(r := obj)) ∨ (∃ 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 := ob) ∨ ¬ 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 := ob) ∨ ¬ 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 := ob), r0 ∈ h0, rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), ¬ r0 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
h = h0 -- r1, r1 ∈ h0, rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), ¬ 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), ¬ r ∈ h0, ¬ r ∈ rs, ¬ rtc(n + 1, modify(rs))(h1, h0) ⊦
Used terms: n + 1
| r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ r ∈ h0, ¬ r ∈ rs, ¬ rtc(n + 1, modify(rs))(h1, h0) ⊦ |
⊦ n ≠ 0 → (rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2)))
n + 1 ≠ 0, r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ∀ a. ¬(rtc(n + 1 - 1, modify(rs))(h1, a) ∧ modify(rs)(a, 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)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2))) |
| n + 1 ≠ 0, r ≠ null, rtc(n0, modify(rs))(h0 ++ r, h1), rtc(n, modify(rs))(h1, h0 ++ r), ¬ r ∈ h0, ¬ r ∈ rs, ∀ a. ¬(rtc(n + 1 - 1, modify(rs))(h1, a) ∧ modify(rs)(a, h0)) ⊦ |
r ≠ null, rtc(n, modify(rs))(h1, h0 ++ r), rtc(n0, modify(rs))(h0 ++ r, h1), ¬ r ∈ h0, ¬ r ∈ rs, ∀ a. ¬ rtc(n, modify(rs))(h1, a) ∨ ¬ modify(rs)(a, 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, ∀ a. ¬ rtc(n, modify(rs))(h1, a) ∨ ¬ modify(rs)(a, 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, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ 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, obj. ¬(¬ r0 ∈ rs ∧ r0 ∈ h0 ++ r ∧ h0 = (h0 ++ r)(r0 := obj)), ∀ 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, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ 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, obj. ¬(¬ r0 ∈ rs ∧ r0 ∈ h0 ++ r ∧ h0 = (h0 ++ r)(r0 := obj)), ∀ 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, obj. r0 ∈ rs ∨ r0 ≠ r ∧ ¬ r0 ∈ h0 ∨ h0 ≠ (h0 ++ r)(r0 := obj), ∀ 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, obj. r0 ∈ rs ∨ r0 ≠ r ∧ ¬ r0 ∈ h0 ∨ h0 ≠ (h0 ++ r)(r0 := obj), ∀ 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 := ob), r0 ∈ h0, rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), ¬ r0 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
r0 ∈ h0, rtc(n0, modify(rs))(h0(r0 := ob), h1), rtc(n, modify(rs))(h1, h0(r0 := ob)), ¬ r0 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
| r0 ∈ h0, rtc(n0, modify(rs))(h0(r0 := ob), h1), rtc(n, modify(rs))(h1, h0(r0 := ob)), ¬ r0 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
r0 ∈ h0, rtc(n, modify(rs))(h1, h0(r0 := ob)), rtc(n0, modify(rs))(h0(r0 := ob), h1), ¬ r0 ∈ rs, ¬ rtc(n + 1, modify(rs))(h1, h0) ⊦
Used terms: n + 1
| r0 ∈ h0, rtc(n, modify(rs))(h1, h0(r0 := ob)), rtc(n0, modify(rs))(h0(r0 := ob), h1), ¬ r0 ∈ rs, ¬ rtc(n + 1, modify(rs))(h1, h0) ⊦ |
⊦ n ≠ 0 → (rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2)))
n + 1 ≠ 0, r0 ∈ h0, rtc(n0, modify(rs))(h0(r0 := ob), h1), rtc(n, modify(rs))(h1, h0(r0 := ob)), ¬ r0 ∈ rs, ∀ a. ¬(rtc(n + 1 - 1, modify(rs))(h1, a) ∧ modify(rs)(a, 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)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2))) |
| n + 1 ≠ 0, r0 ∈ h0, rtc(n0, modify(rs))(h0(r0 := ob), h1), rtc(n, modify(rs))(h1, h0(r0 := ob)), ¬ r0 ∈ rs, ∀ a. ¬(rtc(n + 1 - 1, modify(rs))(h1, a) ∧ modify(rs)(a, h0)) ⊦ |
r0 ∈ h0, rtc(n, modify(rs))(h1, h0(r0 := ob)), rtc(n0, modify(rs))(h0(r0 := ob), h1), ¬ r0 ∈ rs, ∀ a. ¬ rtc(n, modify(rs))(h1, a) ∨ ¬ modify(rs)(a, 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)
| r0 ∈ h0, rtc(n, modify(rs))(h1, h0(r0 := ob)), rtc(n0, modify(rs))(h0(r0 := ob), h1), ¬ r0 ∈ rs, ∀ a. ¬ rtc(n, modify(rs))(h1, a) ∨ ¬ modify(rs)(a, h0) ⊦ |
r0 ∈ h0, rtc(n0, modify(rs))(h0(r0 := ob), h1), rtc(n, modify(rs))(h1, h0(r0 := ob)), ¬ r0 ∈ rs, ¬ rtc(n, modify(rs))(h1, h0(r0 := ob)) ∨ ¬ modify(rs)(h0(r0 := ob), h0) ⊦
Used terms: h0(r0 := ob)
| r0 ∈ h0, rtc(n0, modify(rs))(h0(r0 := ob), h1), rtc(n, modify(rs))(h1, h0(r0 := ob)), ¬ r0 ∈ rs, ¬ rtc(n, modify(rs))(h1, h0(r0 := ob)) ∨ ¬ modify(rs)(h0(r0 := ob), h0) ⊦ |
r0 ∈ h0, rtc(n, modify(rs))(h1, h0(r0 := ob)), rtc(n0, modify(rs))(h0(r0 := ob), h1), ¬ modify(rs)(h0(r0 := ob), h0), ¬ r0 ∈ rs ⊦
| r0 ∈ h0, rtc(n, modify(rs))(h1, h0(r0 := ob)), rtc(n0, modify(rs))(h0(r0 := ob), h1), ¬ modify(rs)(h0(r0 := ob), h0), ¬ r0 ∈ rs ⊦ |
⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r)
r0 ∈ h0, rtc(n0, modify(rs))(h0(r0 := ob), h1), rtc(n, modify(rs))(h1, h0(r0 := ob)), ¬ r0 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0(r0 := ob) ∧ h0 = h0(r0 := ob) ++ r), ∀ r, obj. ¬(¬ r ∈ rs ∧ r ∈ h0(r0 := ob) ∧ h0 = h0(r0 := ob)(r := obj)), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ h0(r0 := ob) ∧ h0 = h0(r0 := ob) -- r) ⊦
Used terms: rs, h0(r0 := ob), h0
| ⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r) |
| r0 ∈ h0, rtc(n0, modify(rs))(h0(r0 := ob), h1), rtc(n, modify(rs))(h1, h0(r0 := ob)), ¬ r0 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0(r0 := ob) ∧ h0 = h0(r0 := ob) ++ r), ∀ r, obj. ¬(¬ r ∈ rs ∧ r ∈ h0(r0 := ob) ∧ h0 = h0(r0 := ob)(r := obj)), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ h0(r0 := ob) ∧ h0 = h0(r0 := ob) -- r) ⊦ |
r0 ∈ h0, rtc(n, modify(rs))(h1, h0(r0 := ob)), rtc(n0, modify(rs))(h0(r0 := ob), h1), ¬ r0 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0(r0 := ob) -- r, ∀ r, obj. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0(r0 := ob)(r := obj), ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ h0(r0 := ob) ++ r ⊦
Used simplifier rules: ⊦ r ∈ h(r0 := o) ↔ r ∈ h; (s)
| r0 ∈ h0, rtc(n, modify(rs))(h1, h0(r0 := ob)), rtc(n0, modify(rs))(h0(r0 := ob), h1), ¬ r0 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0(r0 := ob) -- r, ∀ r, obj. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ h0(r0 := ob)(r := obj), ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ h0(r0 := ob) ++ r ⊦ |
Used simplifier rules: ⊦ h(r := o0)(r := o1) = h(r := o1); (s) r ∈ h ⊦ h(r) = o → h(r := o) = h; (s) Used terms: r0, h0(r0)
| h = h0 -- r1, r1 ∈ h0, rtc(n, modify(rs))(h1, h), rtc(n0, modify(rs))(h, h1), ¬ r1 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦
| r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h1, h0) ⊦ |
r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ¬ rtc(n + 2, modify(rs))(h1, h0) ⊦
Used terms: n + 2
| r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ¬ rtc(n + 2, modify(rs))(h1, h0) ⊦ |
⊦ n ≠ 0 → (rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2)))
n + 2 ≠ 0, r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ a. ¬(rtc(n + 2 - 1, modify(rs))(h1, a) ∧ modify(rs)(a, 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)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2))) |
| n + 2 ≠ 0, r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ a. ¬(rtc(n + 2 - 1, modify(rs))(h1, a) ∧ modify(rs)(a, h0)) ⊦ |
r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ∀ a. ¬ rtc(1 + n, modify(rs))(h1, a) ∨ ¬ modify(rs)(a, 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)
| r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ∀ a. ¬ rtc(1 + n, modify(rs))(h1, a) ∨ ¬ modify(rs)(a, h0) ⊦ |
r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ¬ rtc(1 + n, modify(rs))(h1, (h0 -- r1) ++ r1) ∨ ¬ modify(rs)((h0 -- r1) ++ r1, h0) ⊦
Used terms: (h0 -- r1) ++ r1
| r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ¬ rtc(1 + n, modify(rs))(h1, (h0 -- r1) ++ r1) ∨ ¬ modify(rs)((h0 -- r1) ++ r1, h0) ⊦ |
r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ¬ rtc(1 + n, modify(rs))(h1, (h0 -- r1) ++ r1) ⊦
r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ modify(rs)((h0 -- r1) ++ r1, h0), ¬ r1 ∈ rs ⊦
| r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ¬ rtc(1 + n, modify(rs))(h1, (h0 -- r1) ++ r1) ⊦ |
⊦ n ≠ 0 → (rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2)))
1 + n ≠ 0, r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ a. ¬(rtc(1 + n - 1, modify(rs))(h1, a) ∧ modify(rs)(a, (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)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2))) |
| 1 + n ≠ 0, r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ a. ¬(rtc(1 + n - 1, modify(rs))(h1, a) ∧ modify(rs)(a, (h0 -- r1) ++ r1)) ⊦ |
r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ∀ a. ¬ rtc(n, modify(rs))(h1, a) ∨ ¬ modify(rs)(a, (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)
| r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ∀ a. ¬ rtc(n, modify(rs))(h1, a) ∨ ¬ modify(rs)(a, (h0 -- r1) ++ r1) ⊦ |
r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ¬ rtc(n, modify(rs))(h1, h0 -- r1) ∨ ¬ modify(rs)(h0 -- r1, (h0 -- r1) ++ r1) ⊦
Used terms: h0 -- r1
| r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ¬ rtc(n, modify(rs))(h1, h0 -- r1) ∨ ¬ modify(rs)(h0 -- r1, (h0 -- r1) ++ r1) ⊦ |
r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ modify(rs)(h0 -- r1, (h0 -- r1) ++ r1), ¬ r1 ∈ rs ⊦
| r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ modify(rs)(h0 -- r1, (h0 -- r1) ++ r1), ¬ r1 ∈ rs ⊦ |
⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r)
r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = (h0 -- r1) ++ r), ∀ r, obj. ¬(¬ r ∈ rs ∧ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = (h0 -- r1)(r := obj)), ∀ 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, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r) |
| r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = (h0 -- r1) ++ r), ∀ r, obj. ¬(¬ r ∈ rs ∧ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = (h0 -- r1)(r := obj)), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ h0 -- r1 ∧ (h0 -- r1) ++ r1 = h0 -- r1 -- r) ⊦ |
r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ 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, obj. r ∈ rs ∨ r = r1 ∨ ¬ r ∈ h0 ∨ (h0 -- r1) ++ r1 ≠ (h0 -- r1)(r := obj) ⊦
Used simplifier rules: ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s)
| r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ 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, obj. r ∈ rs ∨ r = r1 ∨ ¬ r ∈ h0 ∨ (h0 -- r1) ++ r1 ≠ (h0 -- r1)(r := obj) ⊦ |
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s) Used terms: r1
| r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ modify(rs)((h0 -- r1) ++ r1, h0), ¬ r1 ∈ rs ⊦ |
⊦ modify(rs)(h0, h1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ h0 ∧ h1 = h0 ++ r) ∨ (∃ r, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r)
r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ (h0 -- r1) ++ r1 ∧ h0 = (h0 -- r1) ++ r1 ++ r), ∀ r, obj. ¬(¬ r ∈ rs ∧ r ∈ (h0 -- r1) ++ r1 ∧ h0 = ((h0 -- r1) ++ r1)(r := obj)), ∀ 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, obj. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0(r := obj)) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ h0 ∧ h1 = h0 -- r) |
| r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ r1 ∈ rs, ∀ r. ¬(¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ (h0 -- r1) ++ r1 ∧ h0 = (h0 -- r1) ++ r1 ++ r), ∀ r, obj. ¬(¬ r ∈ rs ∧ r ∈ (h0 -- r1) ++ r1 ∧ h0 = ((h0 -- r1) ++ r1)(r := obj)), ∀ r. ¬(¬ r ∈ rs ∧ r ∈ (h0 -- r1) ++ r1 ∧ h0 = ((h0 -- r1) ++ r1) -- r) ⊦ |
r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∀ r, obj. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1)(r := obj), ∀ 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)
| r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ r1 ∈ rs, ∀ r. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1) -- r, ∀ r, obj. r ∈ rs ∨ ¬ r ∈ h0 ∨ h0 ≠ ((h0 -- r1) ++ r1)(r := obj), ∀ r. r ∈ rs ∨ r = null ∨ r ∈ h0 ∨ h0 ≠ (h0 -- r1) ++ r1 ++ r ⊦ |
r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ 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)
| r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ 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)), r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ 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)), r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ 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)))
r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ 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))) |
| r1 ∈ h0, rtc(n0, modify(rs))(h0 -- r1, h1), rtc(n, modify(rs))(h1, h0 -- r1), ¬ 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)), r ∈ h0, r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ 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 ⊦ (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)), r ∈ h0, r1 ∈ h0, rtc(n, modify(rs))(h1, h0 -- r1), rtc(n0, modify(rs))(h0 -- r1, h1), ¬ 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.