| ⊦ modify*(rs)(h0, h1) ↔ (h0 ≡ h1)(rs) |
¬(modify*(rs)(h0, h1) ↔ (h0 ≡ h1)(rs)) ⊦
| ¬(modify*(rs)(h0, h1) ↔ (h0 ≡ h1)(rs)) ⊦ |
modify*(rs)(h0, h1), ¬ (h0 ≡ h1)(rs) ⊦
(h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1) ⊦
| modify*(rs)(h0, h1), ¬ (h0 ≡ h1)(rs) ⊦ |
⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1)
modify(rs).^*(h0, h1), ¬ (h0 ≡ h1)(rs) ⊦
Used terms: h1, h0, rs
| ⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1) |
| modify(rs).^*(h0, h1), ¬ (h0 ≡ h1)(rs) ⊦ |
⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2))
¬ (h0 ≡ h1)(rs), ∃ n. rtc(n, modify(rs))(h0, h1) ⊦
Used terms: modify(rs), h0, h1
| ⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2)) |
| ¬ (h0 ≡ h1)(rs), ∃ n. rtc(n, modify(rs))(h0, h1) ⊦ |
rtc(n, modify(rs))(h0, h1), ¬ (h0 ≡ h1)(rs) ⊦
| rtc(n, modify(rs))(h0, h1), ¬ (h0 ≡ h1)(rs) ⊦ |
rtc(0, modify(rs))(h0, h1), ¬ (h0 ≡ h1)(rs) ⊦
rtc(n0.+1, modify(rs))(h0, h1), ¬ (h0 ≡ h1)(rs), ∀ rs, h0, h1. ¬(rtc(n0, modify(rs))(h0, h1) ∧ ¬ (h0 ≡ h1)(rs)) ⊦
Used simplifier rules: Nat freely generated by 0, +1;
| rtc(0, modify(rs))(h0, h1), ¬ (h0 ≡ h1)(rs) ⊦ |
¬ (h1 ≡ h1)(rs) ⊦
Used simplifier rules: ⊦ rtc(0, pelem)(a1, a2) ↔ a1 = a2; (s)
| ¬ (h1 ≡ h1)(rs) ⊦ |
⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
Used terms: rs, h1, h1
| ⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| rtc(n0.+1, modify(rs))(h0, h1), ¬ (h0 ≡ h1)(rs), ∀ rs, h0, h1. ¬(rtc(n0, modify(rs))(h0, h1) ∧ ¬ (h0 ≡ h1)(rs)) ⊦ |
rtc(n0 + 1, modify(rs))(h0, h1), ¬ (h0 ≡ h1)(rs), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ (h ≡ h2)(rs0) ⊦
Used simplifier rules: ⊦ m.+1 = m + 1; (s)
| rtc(n0 + 1, modify(rs))(h0, h1), ¬ (h0 ≡ h1)(rs), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ (h ≡ h2)(rs0) ⊦ |
⊦ rtc(n + 1, pelem)(a1, a2) ↔ (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2))
¬ (h0 ≡ h1)(rs), ∃ a. modify(rs)(h0, a) ∧ rtc(n0, modify(rs))(a, h1), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ (h ≡ h2)(rs0) ⊦
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)) |
| ¬ (h0 ≡ h1)(rs), ∃ a. modify(rs)(h0, a) ∧ rtc(n0, modify(rs))(a, h1), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ (h ≡ h2)(rs0) ⊦ |
modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ¬ (h0 ≡ h1)(rs), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ (h ≡ h2)(rs0) ⊦
| modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ¬ (h0 ≡ h1)(rs), ∀ rs0, h, h2. ¬ rtc(n0, modify(rs0))(h, h2) ∨ (h ≡ h2)(rs0) ⊦ |
modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ¬ (h0 ≡ h1)(rs), ¬ rtc(n0, modify(rs))(h, h1) ∨ (h ≡ h1)(rs) ⊦
Used terms: rs, h, h1
| modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ¬ (h0 ≡ h1)(rs), ¬ rtc(n0, modify(rs))(h, h1) ∨ (h ≡ h1)(rs) ⊦ |
(h ≡ h1)(rs), modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ¬ (h0 ≡ h1)(rs) ⊦
| (h ≡ h1)(rs), modify(rs)(h0, h), rtc(n0, modify(rs))(h, h1), ¬ (h0 ≡ h1)(rs) ⊦ |
(h ≡ h1)(rs), modify(rs)(h0, h), ¬ (h0 ≡ h1)(rs) ⊦
| (h ≡ h1)(rs), modify(rs)(h0, h), ¬ (h0 ≡ h1)(rs) ⊦ |
⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
(h ≡ h1)(rs), modify(rs)(h0, h), ∃ r. ¬(r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) ⊦
Used terms: rs, h1, h0
| ⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| (h ≡ h1)(rs), modify(rs)(h0, h), ∃ r. ¬(r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) ⊦ |
(h ≡ h1)(rs), modify(rs)(h0, h), r ∈ rs ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
| (h ≡ h1)(rs), modify(rs)(h0, h), r ∈ rs ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
modify(rs)(h0, h), r ∈ rs, ∀ r. r ∈ rs → (r ∈ h ↔ r ∈ h1) ∧ (r ∈ h → h(r) = h1(r)) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used terms: rs, h1, h
| ⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| modify(rs)(h0, h), r ∈ rs, ∀ r. r ∈ rs → (r ∈ h ↔ r ∈ h1) ∧ (r ∈ h → h(r) = h1(r)) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
modify(rs)(h0, h), r ∈ rs, r ∈ rs → (r ∈ h ↔ r ∈ h1) ∧ (r ∈ h → h(r) = h1(r)) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used terms: r
| modify(rs)(h0, h), r ∈ rs, r ∈ rs → (r ∈ h ↔ r ∈ h1) ∧ (r ∈ h → h(r) = h1(r)) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h ↔ r ∈ h1, modify(rs)(h0, h), r ∈ rs, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
| r ∈ h ↔ r ∈ h1, modify(rs)(h0, h), r ∈ rs, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
⊦ 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 ∈ h ↔ r ∈ h1, r ∈ rs, r ∈ h1 → h(r) = h1(r), (∃ 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) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used terms: h, h0, 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 ∈ h ↔ r ∈ h1, r ∈ rs, r ∈ h1 → h(r) = h1(r), (∃ 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) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h ↔ r ∈ h1, r ∈ rs, ¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h0 ∧ h = h0 ++ r0 ∨ ¬ r1 ∈ rs ∧ r1 ∈ h0 ∧ h = h0(r1 := ob) ∨ ¬ r2 ∈ rs ∧ r2 ∈ h0 ∧ h = h0 -- r2, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
| r ∈ h ↔ r ∈ h1, r ∈ rs, ¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h0 ∧ h = h0 ++ r0 ∨ ¬ r1 ∈ rs ∧ r1 ∈ h0 ∧ h = h0(r1 := ob) ∨ ¬ r2 ∈ rs ∧ r2 ∈ h0 ∧ h = h0 -- r2, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
h = h0 ++ r0, r ∈ h ↔ r ∈ h1, r0 ≠ null, r ∈ rs, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
h = h0(r1 := ob), r ∈ h ↔ r ∈ h1, r ∈ rs, r1 ∈ h0, ¬ r1 ∈ rs, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
h = h0 -- r2, r ∈ h ↔ r ∈ h1, r ∈ rs, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
| h = h0 ++ r0, r ∈ h ↔ r ∈ h1, r0 ≠ null, r ∈ rs, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h0 ++ r0 ↔ r ∈ h1, r0 ≠ null, r ∈ rs, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → (h0 ++ r0)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
| r ∈ h0 ++ r0 ↔ r ∈ h1, r0 ≠ null, r ∈ rs, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → (h0 ++ r0)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ (h ++ r0)(r) = h(r)
r ∈ h0 ++ r0 ↔ r ∈ h1, r0 ≠ null, r ∈ rs, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → (h0 ++ r0)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r ∈ h0 ∧ r0 ≠ null ∧ ¬ r0 ∈ h0
r ∈ h0 ++ r0 ↔ r ∈ h1, r0 ≠ null, r ∈ rs, r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → h0(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used terms: r, h0, r0
| r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ (h ++ r0)(r) = h(r) |
| r ∈ h0 ++ r0 ↔ r ∈ h1, r0 ≠ null, r ∈ rs, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → (h0 ++ r0)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r ∈ h0 ∧ r0 ≠ null ∧ ¬ r0 ∈ h0 |
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s)
| r ∈ h0 ++ r0 ↔ r ∈ h1, r0 ≠ null, r ∈ rs, r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → h0(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h0 ++ r0 ↔ r ∈ h1, r0 ≠ null, r ∈ h0, r ∈ rs, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → h0(r) = h1(r) ⊦ r ∈ h1 ∧ h0(r) = h1(r)
| r ∈ h0 ++ r0 ↔ r ∈ h1, r0 ≠ null, r ∈ h0, r ∈ rs, ¬ r0 ∈ h0, ¬ r0 ∈ rs, r ∈ h1 → h0(r) = h1(r) ⊦ r ∈ h1 ∧ h0(r) = h1(r) |
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) Used formulas: r ∈ h0 ++ r0
| h = h0(r1 := ob), r ∈ h ↔ r ∈ h1, r ∈ rs, r1 ∈ h0, ¬ r1 ∈ rs, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h0(r1 := ob) ↔ r ∈ h1, r ∈ rs, r1 ∈ h0, ¬ r1 ∈ rs, r ∈ h1 → h0(r1 := ob)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
| r ∈ h0(r1 := ob) ↔ r ∈ h1, r ∈ rs, r1 ∈ h0, ¬ r1 ∈ rs, r ∈ h1 → h0(r1 := ob)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
Used simplifier rules: ⊦ r ∈ h(r0 := o) ↔ r ∈ h; (s) ⊦ h(r0 := o)(r) = (r = r0 ∧ r0 ∈ h ⊃ o;h(r)); (s) Used formulas: r ∈ h0(r1 := ob)
| h = h0 -- r2, r ∈ h ↔ r ∈ h1, r ∈ rs, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → h(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h0 -- r2 ↔ r ∈ h1, r ∈ rs, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → (h0 -- r2)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
| r ∈ h0 -- r2 ↔ r ∈ h1, r ∈ rs, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → (h0 -- r2)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h ⊦ r ≠ r0 → (h -- r0)(r) = h(r)
r ∈ h0 -- r2 ↔ r ∈ h1, r ∈ rs, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → (h0 -- r2)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r ∈ h0 ∧ r ≠ r2
r ∈ h0 -- r2 ↔ r ∈ h1, r ≠ r2, r ∈ rs, r ∈ h0, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → h0(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used terms: r, r2, h0
| r ∈ h ⊦ r ≠ r0 → (h -- r0)(r) = h(r) |
| r ∈ h0 -- r2 ↔ r ∈ h1, r ∈ rs, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → (h0 -- r2)(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r ∈ h0 ∧ r ≠ r2 |
(h0 -- r2)(r) = h1(r), r ∈ rs, r ∈ h1, r ∈ h0 -- r2, r2 ∈ h0, ¬ r ∈ h0, ¬ r2 ∈ rs ⊦
| (h0 -- r2)(r) = h1(r), r ∈ rs, r ∈ h1, r ∈ h0 -- r2, r2 ∈ h0, ¬ r ∈ h0, ¬ r2 ∈ rs ⊦ |
⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h
Used terms: r, h0, r2
| ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h |
| r ∈ h0 -- r2 ↔ r ∈ h1, r ≠ r2, r ∈ rs, r ∈ h0, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → h0(r) = h1(r) ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h0 -- r2 ↔ r ∈ h1, r ≠ r2, r ∈ h0, r ∈ rs, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → h0(r) = h1(r) ⊦ r ∈ h1 ∧ h0(r) = h1(r)
| r ∈ h0 -- r2 ↔ r ∈ h1, r ≠ r2, r ∈ h0, r ∈ rs, r2 ∈ h0, ¬ r2 ∈ rs, r ∈ h1 → h0(r) = h1(r) ⊦ r ∈ h1 ∧ h0(r) = h1(r) |
Used simplifier rules: ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s) Used formulas: r ∈ h0 -- r2
| (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1) ⊦ |
(h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: <; (wellfounded) Used terms: #(h0 \ rs) + #(h1 \ rs)
| (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
h0 \ rs = ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used formulas: h0 \ rs = ∅
| h0 \ rs = ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
h0 \ rs = ∅, h1 \ rs = ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
h0 \ rs = ∅, h1 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used formulas: h1 \ rs = ∅
| h0 \ rs = ∅, h1 \ rs = ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
h0 \ rs = ∅, h1 \ rs = ∅, ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h0, h1, rs
| ⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| h0 \ rs = ∅, h1 \ rs = ∅, ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1)
h0 \ rs = ∅, h1 \ rs = ∅, ¬ modify(rs).^*(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: rs, h0, h1
| ⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1) |
| h0 \ rs = ∅, h1 \ rs = ∅, ¬ modify(rs).^*(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2))
h0 \ rs = ∅, h1 \ rs = ∅, ∀ n. ¬ rtc(n, modify(rs))(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: modify(rs), h0, h1
| ⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2)) |
| h0 \ rs = ∅, h1 \ rs = ∅, ∀ n. ¬ rtc(n, modify(rs))(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
h0 \ rs = ∅, h1 \ rs = ∅, ¬ rtc(0, modify(rs))(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: 0
| h0 \ rs = ∅, h1 \ rs = ∅, ¬ rtc(0, modify(rs))(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ rtc(0, pelem)(a1, a2) ↔ a1 = a2
h0 \ rs = ∅, h1 \ rs = ∅, h0 ≠ h1, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: modify(rs), h0, h1
| ⊦ rtc(0, pelem)(a1, a2) ↔ a1 = a2 |
| h0 \ rs = ∅, h1 \ rs = ∅, h0 ≠ h1, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
h0 \ rs = ∅, h1 \ rs = ∅, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∃ r. ¬((r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h0, h1
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| h0 \ rs = ∅, h1 \ rs = ∅, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∃ r. ¬((r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
h0 \ rs = ∅, h1 \ rs = ∅, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
| h0 \ rs = ∅, h1 \ rs = ∅, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
h0 \ rs = ∅, h1 \ rs = ∅, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used terms: r
| h0 \ rs = ∅, h1 \ rs = ∅, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
h0 \ rs = ∅, h1 \ rs = ∅, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
| h0 \ rs = ∅, h1 \ rs = ∅, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
h0 \ rs = ∅, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r. (r ∈ h1 \ rs ↔ r ∈ ∅) ∧ (r ∈ h1 \ rs → (h1 \ rs)(r) = ∅(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used terms: h1 \ rs, ∅
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| h0 \ rs = ∅, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r. (r ∈ h1 \ rs ↔ r ∈ ∅) ∧ (r ∈ h1 \ rs → (h1 \ rs)(r) = ∅(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
h0 \ rs = ∅, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used simplifier rules: ⊦ ¬ r ∈ ∅; (s)
| h0 \ rs = ∅, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r. (r ∈ h0 \ rs ↔ r ∈ ∅) ∧ (r ∈ h0 \ rs → (h0 \ rs)(r) = ∅(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used terms: h0 \ rs, ∅
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r. (r ∈ h0 \ rs ↔ r ∈ ∅) ∧ (r ∈ h0 \ rs → (h0 \ rs)(r) = ∅(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ r0. ¬ r0 ∈ h0 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used simplifier rules: ⊦ ¬ r ∈ ∅; (s)
| ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ r0. ¬ r0 ∈ h0 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
¬ r ∈ h0 \ rs, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))
Used terms: r
| ¬ r ∈ h0 \ rs, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)) |
r ∈ h1, ¬ r ∈ rs, ¬ r ∈ h0, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs; (ss)
| r ∈ h1, ¬ r ∈ rs, ¬ r ∈ h0, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ r0. ¬ r0 ∈ h1 \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < # ∅ + # ∅ → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
Used simplifier rules: ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs; (ss) Used terms: r
| h0 \ rs = ∅, h1 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
h1 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| h1 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
h1 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| h1 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
(h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∃ r. ¬((r ∈ h1 \ rs ↔ r ∈ ∅) ∧ (r ∈ h1 \ rs → (h1 \ rs)(r) = ∅(r))), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h1 \ rs, ∅
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∃ r. ¬((r ∈ h1 \ rs ↔ r ∈ ∅) ∧ (r ∈ h1 \ rs → (h1 \ rs)(r) = ∅(r))), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
(h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ ¬ r ∈ ∅; (s)
| (h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
(h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ #(h0 \ rs) + #((h1 -- r) \ rs) < #(h0 \ rs) + #(h1 \ rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
(h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify*(rs)(h0, h1 -- r)
Used terms: h0, rs, h1 -- r
| (h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ #(h0 \ rs) + #((h1 -- r) \ rs) < #(h0 \ rs) + #(h1 \ rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ (h -- r) \ rs = (h \ rs) -- r
(h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ #(h0 \ rs) + #((h1 \ rs) -- r) < #(h0 \ rs) + #(h1 \ rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h1, r, rs
| ⊦ (h -- r) \ rs = (h \ rs) -- r |
| (h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ #(h0 \ rs) + #((h1 \ rs) -- r) < #(h0 \ rs) + #(h1 \ rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ r ∈ h → #(h -- r) = # h - 1
(h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ #(h0 \ rs) + (#(h1 \ rs) - 1) < #(h0 \ rs) + #(h1 \ rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h1 \ rs, r
| ⊦ r ∈ h → #(h -- r) = # h - 1 |
| (h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ #(h0 \ rs) + (#(h1 \ rs) - 1) < #(h0 \ rs) + #(h1 \ rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#(h1 \ rs) = 0, (h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ #(h0 \ rs) + (#(h1 \ rs) - 1) < #(h0 \ rs) + #(h1 \ rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m = n + 1 → ¬ m ≤ n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: #(h1 \ rs), n0
| #(h1 \ rs) = 0, (h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ #(h0 \ rs) + (#(h1 \ rs) - 1) < #(h0 \ rs) + #(h1 \ rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#(h1 \ rs) = 0, (h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ 0 ≤ m; (s) leprf: ⊦ m ≤ m - 1 → m = 0; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m + n < m + n0 ↔ n < n0; (s)
| #(h1 \ rs) = 0, (h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
#(h1 \ rs) = 0, r ∈ h1 \ rs, ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h0, h1, rs
| ⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| #(h1 \ rs) = 0, r ∈ h1 \ rs, ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1)
#(h1 \ rs) = 0, r ∈ h1 \ rs, ¬ modify(rs).^*(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: rs, h0, h1
| ⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1) |
| #(h1 \ rs) = 0, r ∈ h1 \ rs, ¬ modify(rs).^*(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2))
#(h1 \ rs) = 0, r ∈ h1 \ rs, ∀ n. ¬ rtc(n, modify(rs))(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: modify(rs), h0, h1
| ⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2)) |
| #(h1 \ rs) = 0, r ∈ h1 \ rs, ∀ n. ¬ rtc(n, modify(rs))(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#(h1 \ rs) = 0, r ∈ h1 \ rs, ¬ rtc(0, modify(rs))(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: 0
| #(h1 \ rs) = 0, r ∈ h1 \ rs, ¬ rtc(0, modify(rs))(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ rtc(0, pelem)(a1, a2) ↔ a1 = a2
#(h1 \ rs) = 0, h0 ≠ h1, r ∈ h1 \ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: modify(rs), h0, h1
| ⊦ rtc(0, pelem)(a1, a2) ↔ a1 = a2 |
| #(h1 \ rs) = 0, h0 ≠ h1, r ∈ h1 \ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
#(h1 \ rs) = 0, r ∈ h1 \ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∃ r. ¬((r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h0, h1
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| #(h1 \ rs) = 0, r ∈ h1 \ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∃ r. ¬((r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#(h1 \ rs) = 0, r ∈ h1 \ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0))
| #(h1 \ rs) = 0, r ∈ h1 \ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0)) |
⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs
#(h1 \ rs) = 0, r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0))
Used terms: r, h1, rs
| ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs |
| #(h1 \ rs) = 0, r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0)) |
#(h1 \ rs) = 0, r0 ∈ h0 ↔ r0 ∈ h1, r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0))
#(h1 \ rs) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ h1), r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0))
Used formulas: r0 ∈ h0 ↔ r0 ∈ h1
| #(h1 \ rs) = 0, r0 ∈ h0 ↔ r0 ∈ h1, r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0)) |
#(h1 \ rs) = 0, h0(r0) ≠ h1(r0), r ∈ h1, r0 ∈ h0, r0 ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| #(h1 \ rs) = 0, h0(r0) ≠ h1(r0), r ∈ h1, r0 ∈ h0, r0 ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#(h1 \ rs) = 0, h0(r0) ≠ h1(r0), r ∈ h1, r0 ∈ h1, r0 ∈ h0, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: r0
| #(h1 \ rs) = 0, h0(r0) ≠ h1(r0), r ∈ h1, r0 ∈ h1, r0 ∈ h0, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#(h1 \ rs) = 0, h0(r0) ≠ h1(r0), r ∈ h1, r0 ∈ h0, r0 ∈ h1, ¬ r ∈ rs, ¬ r0 ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| #(h1 \ rs) = 0, h0(r0) ≠ h1(r0), r ∈ h1, r0 ∈ h0, r0 ∈ h1, ¬ r ∈ rs, ¬ r0 ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ r ≠ null → (r ∈ h ↔ (∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0))
#(h1 \ rs) = 0, h0(r0) ≠ h1(r0), r0 ≠ null, r ∈ h1, r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ∃ h0, ob. h1 = (h0 ++ r0)(r0 := ob) ∧ ¬ r0 ∈ h0, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ ¬ null ∈ h; (s) Used terms: r0, h1
| ⊦ r ≠ null → (r ∈ h ↔ (∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0)) |
| #(h1 \ rs) = 0, h0(r0) ≠ h1(r0), r0 ≠ null, r ∈ h1, r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ∃ h0, ob. h1 = (h0 ++ r0)(r0 := ob) ∧ ¬ r0 ∈ h0, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#((h ++ r0)(r0 := ob) \ rs) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s)
| #((h ++ r0)(r0 := ob) \ rs) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
¬ r ∈ h, r ≠ null ⊦ ¬ r ∈ rs → (h ++ r)(r := o) \ rs = ((h \ rs) ++ r)(r := o)
# ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r0 ≠ null, r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s) Used terms: h, r0, ob, rs
| ¬ r ∈ h, r ≠ null ⊦ ¬ r ∈ rs → (h ++ r)(r := o) \ rs = ((h \ rs) ++ r)(r := o) |
| # ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r0 ≠ null, r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
# ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s)
| # ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
r ∈ h ⊦ # h(r := o) = # h
# ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ (h \ rs) ++ r0, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
#((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, r0 ∈ (h \ rs) ++ r0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: (h \ rs) ++ r0, r0, ob
| r ∈ h ⊦ # h(r := o) = # h |
| # ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ (h \ rs) ++ r0, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h
# ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ (h \ rs) ++ r0, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ r0 ≠ null ∧ ¬ r0 ∈ h \ rs
Used terms: r0, h \ rs, r0
| r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h |
| # ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ (h \ rs) ++ r0, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ r0 ≠ null ∧ ¬ r0 ∈ h \ rs |
# ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, r0 ∈ h \ rs, ¬ r ∈ rs, ¬ r0 ∈ (h \ rs) ++ r0, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s)
| # ((h \ rs) ++ r0)(r0 := ob) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, r0 ∈ h \ rs, ¬ r ∈ rs, ¬ r0 ∈ (h \ rs) ++ r0, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs
Used terms: r0, h, rs
| ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs |
| #((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, r0 ∈ (h \ rs) ++ r0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h
#((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ (h \ rs) ++ r0, r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ r0 ≠ null ∧ ¬ r0 ∈ h \ rs
#((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r0 ≠ null, r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ h \ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), r0 = r0 ∨ r0 ∈ h \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: r0, h \ rs, r0
| r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h |
| #((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ (h \ rs) ++ r0, r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ r0 ≠ null ∧ ¬ r0 ∈ h \ rs |
#((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, r0 ∈ (h \ rs) ++ r0, r0 ∈ h \ rs, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s)
| #((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, r0 ∈ (h \ rs) ++ r0, r0 ∈ h \ rs, ¬ r ∈ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs
Used terms: r0, h, rs
| ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs |
| #((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r0 ≠ null, r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ h \ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), r0 = r0 ∨ r0 ∈ h \ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r0 ≠ null, r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ h \ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| #((h \ rs) ++ r0) = 0, h0(r0) ≠ (h ++ r0)(r0 := ob)(r0), r0 ≠ null, r ∈ (h ++ r0)(r0 := ob), r0 ∈ h0, ¬ r ∈ rs, ¬ r0 ∈ h \ rs, ¬ r0 ∈ rs, ¬ r0 ∈ h, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ (h ++ r0)(r0 := ob)) ∧ (r ∈ h0 → h0(r) = (h ++ r0)(r0 := ob)(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
Used simplifier rules: ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs; (s) ¬ r ∈ h, r ≠ null ⊦ #(h ++ r) = # h + 1; (s) ⊦ 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: r0
| #(h1 \ rs) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ h1), r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0)) |
#(h1 \ rs) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ h1), r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| #(h1 \ rs) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ h1), r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#(h1 \ rs) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ h1), r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: r0
| #(h1 \ rs) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ h1), r ∈ h1, ¬ r ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ h1) ∧ (r0 ∈ h0 → h0(r0) = h1(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#(h1 \ rs) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ h1), r ∈ h1, ¬ r ∈ rs, ¬ r0 ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| #(h1 \ rs) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ h1), r ∈ h1, ¬ r ∈ rs, ¬ r0 ∈ rs, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ r ≠ null → (r ∈ h ↔ (∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0))
#(h1 \ rs) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ h1), ¬ r ∈ rs, ¬ r0 ∈ rs, ∃ h0, ob. h1 = (h0 ++ r)(r := ob) ∧ ¬ r ∈ h0, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ ¬ null ∈ h; (s) Used terms: r, h1
| ⊦ r ≠ null → (r ∈ h ↔ (∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0)) |
| #(h1 \ rs) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ h1), ¬ r ∈ rs, ¬ r0 ∈ rs, ∃ h0, ob. h1 = (h0 ++ r)(r := ob) ∧ ¬ r ∈ h0, ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#((h ++ r)(r := ob) \ rs) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| #((h ++ r)(r := ob) \ rs) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
¬ r ∈ h, r ≠ null ⊦ ¬ r ∈ rs → (h ++ r)(r := o) \ rs = ((h \ rs) ++ r)(r := o)
# ((h \ rs) ++ r)(r := ob) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h, r, ob, rs
| ¬ r ∈ h, r ≠ null ⊦ ¬ r ∈ rs → (h ++ r)(r := o) \ rs = ((h \ rs) ++ r)(r := o) |
| # ((h \ rs) ++ r)(r := ob) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
r ∈ h ⊦ # h(r := o) = # h
# ((h \ rs) ++ r)(r := ob) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
#((h \ rs) ++ r) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: (h \ rs) ++ r, r, ob
| r ∈ h ⊦ # h(r := o) = # h |
| # ((h \ rs) ++ r)(r := ob) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h
# ((h \ rs) ++ r)(r := ob) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ r ≠ null ∧ ¬ r ∈ h \ rs
Used terms: r, h \ rs, r
| r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h |
| # ((h \ rs) ++ r)(r := ob) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ r ≠ null ∧ ¬ r ∈ h \ rs |
# ((h \ rs) ++ r)(r := ob) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ h \ rs, ¬ r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s)
| # ((h \ rs) ++ r)(r := ob) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ h \ rs, ¬ r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs
Used terms: r, h, rs
| ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs |
| #((h \ rs) ++ r) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#((h \ rs) ++ r) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s)
| #((h \ rs) ++ r) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h
#((h \ rs) ++ r) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ r ≠ null ∧ ¬ r ∈ h \ rs
#((h \ rs) ++ r) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ h \ rs, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, r = r ∨ r ∈ h \ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: r, h \ rs, r
| r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h |
| #((h \ rs) ++ r) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ (h \ rs) ++ r, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ r ≠ null ∧ ¬ r ∈ h \ rs |
#((h \ rs) ++ r) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ (h \ rs) ++ r, r ∈ h \ rs, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s)
| #((h \ rs) ++ r) = 0, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), r ∈ (h \ rs) ++ r, r ∈ h \ rs, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs
Used terms: r, h, rs
| ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs |
| #((h \ rs) ++ r) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ h \ rs, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, r = r ∨ r ∈ h \ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
#((h \ rs) ++ r) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ h \ rs, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| #((h \ rs) ++ r) = 0, r ≠ null, ¬(r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)), ¬ r ∈ h \ rs, ¬ r ∈ rs, ¬ r ∈ h, ¬ r0 ∈ rs, ∀ r0. r0 ∈ rs → (r0 ∈ h0 ↔ r0 ∈ (h ++ r)(r := ob)) ∧ (r0 ∈ h0 → h0(r0) = (h ++ r)(r := ob)(r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + 0 → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
Used simplifier rules: ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs; (s) ¬ r ∈ h, r ≠ null ⊦ #(h ++ r) = # h + 1; (s) ⊦ 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 formulas: r0 ∈ h0
| (h0 ≡ h1)(rs), r ∈ h1 \ rs, ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify*(rs)(h0, h1 -- r) |
⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs
(h0 ≡ h1)(rs), r ∈ h1, ¬ modify*(rs)(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify*(rs)(h0, h1 -- r)
Used terms: r, h1, rs
| ⊦ r ∈ h \ rs ↔ r ∈ h ∧ ¬ r ∈ rs |
| (h0 ≡ h1)(rs), r ∈ h1, ¬ modify*(rs)(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify*(rs)(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ modify*(rs)(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify*(rs)(h0, h1 -- r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ modify*(rs)(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify*(rs)(h0, h1 -- r) |
⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1)
(h0 ≡ h1)(rs), r ∈ h1, ¬ modify*(rs)(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify(rs).^*(h0, h1 -- r)
Used terms: rs, h0, h1 -- r
| ⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1) |
| (h0 ≡ h1)(rs), r ∈ h1, ¬ modify*(rs)(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify(rs).^*(h0, h1 -- r) |
⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1)
(h0 ≡ h1)(rs), r ∈ h1, ¬ modify(rs).^*(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify(rs).^*(h0, h1 -- r)
Used terms: rs, h0, h1
| ⊦ modify*(rs)(h0, h1) ↔ modify(rs).^*(h0, h1) |
| (h0 ≡ h1)(rs), r ∈ h1, ¬ modify(rs).^*(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ modify(rs).^*(h0, h1 -- r) |
⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2))
(h0 ≡ h1)(rs), r ∈ h1, ¬ modify(rs).^*(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬(∃ n. rtc(n, modify(rs))(h0, h1 -- r))
Used terms: modify(rs), h0, h1 -- r
| ⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2)) |
| (h0 ≡ h1)(rs), r ∈ h1, ¬ modify(rs).^*(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬(∃ n. rtc(n, modify(rs))(h0, h1 -- r)) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ modify(rs).^*(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ modify(rs).^*(h0, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2))
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
Used terms: modify(rs), h0, h1
| ⊦ pelem.^*(a1, a2) ↔ (∃ n. rtc(n, pelem)(a1, a2)) |
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ n. ¬ rtc(n, modify(rs))(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n + 2, modify(rs))(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
Used terms: n + 2
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n + 2, modify(rs))(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
⊦ n ≠ 0 → (rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2)))
n + 2 ≠ 0, (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ a. ¬(rtc(n + 2 - 1, modify(rs))(h0, a) ∧ modify(rs)(a, h1)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
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), h0, h1
| ⊦ n ≠ 0 → (rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2))) |
| n + 2 ≠ 0, (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ a. ¬(rtc(n + 2 - 1, modify(rs))(h0, a) ∧ modify(rs)(a, h1)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ a. ¬ rtc(1 + n, modify(rs))(h0, a) ∨ ¬ modify(rs)(a, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
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)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ a. ¬ rtc(1 + n, modify(rs))(h0, a) ∨ ¬ modify(rs)(a, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(1 + n, modify(rs))(h0, (h1 -- r) ++ r) ∨ ¬ modify(rs)((h1 -- r) ++ r, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
Used terms: (h1 -- r) ++ r
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(1 + n, modify(rs))(h0, (h1 -- r) ++ r) ∨ ¬ modify(rs)((h1 -- r) ++ r, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(1 + n, modify(rs))(h0, (h1 -- r) ++ r), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
(h0 ≡ h1)(rs), r ∈ h1, ¬ modify(rs)((h1 -- r) ++ r, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(1 + n, modify(rs))(h0, (h1 -- r) ++ r), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
⊦ n ≠ 0 → (rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2)))
1 + n ≠ 0, (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ a. ¬(rtc(1 + n - 1, modify(rs))(h0, a) ∧ modify(rs)(a, (h1 -- r) ++ r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
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), h0, (h1 -- r) ++ r
| ⊦ n ≠ 0 → (rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2))) |
| 1 + n ≠ 0, (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ a. ¬(rtc(1 + n - 1, modify(rs))(h0, a) ∧ modify(rs)(a, (h1 -- r) ++ r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ a. ¬ rtc(n, modify(rs))(h0, a) ∨ ¬ modify(rs)(a, (h1 -- r) ++ r), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
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)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ a. ¬ rtc(n, modify(rs))(h0, a) ∨ ¬ modify(rs)(a, (h1 -- r) ++ r), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h0, h1 -- r) ∨ ¬ modify(rs)(h1 -- r, (h1 -- r) ++ r), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
Used terms: h1 -- r
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h0, h1 -- r) ∨ ¬ modify(rs)(h1 -- r, (h1 -- r) ++ r), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h0, h1 -- r) ∨ ¬ modify(rs)(h1 -- r, (h1 -- r) ++ r), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h0, h1 -- r) ∨ ¬ modify(rs)(h1 -- r, (h1 -- r) ++ r), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
⊦ 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)
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h0, h1 -- r) ∨ ¬ ( (∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r) ++ r0) ∨ (∃ r0, obj. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r)(r0 := obj)) ∨ (∃ r0. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = h1 -- r -- r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
Used terms: rs, h1 -- r, (h1 -- r) ++ r
| ⊦ 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) |
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h0, h1 -- r) ∨ ¬ ( (∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r) ++ r0) ∨ (∃ r0, obj. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r)(r0 := obj)) ∨ (∃ r0. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = h1 -- r -- r0)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h0, h1 -- r) ∨ ¬(∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r) ++ r0) ∧ ¬(∃ r0, obj. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r)(r0 := obj)) ∧ ¬(∃ r0. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = h1 -- r -- r0), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ rtc(n, modify(rs))(h0, h1 -- r) ∨ ¬(∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r) ++ r0) ∧ ¬(∃ r0, obj. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r)(r0 := obj)) ∧ ¬(∃ r0. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = h1 -- r -- r0), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r), ∃ r0. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = h1 -- r -- r0, ∃ r0, obj. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r)(r0 := obj), ∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r) ++ r0
Used simplifier rules: agree-rm-01: ⊦ ¬ r ∈ rs → ((h ≡ (h0 -- r))(rs) ↔ (h ≡ h0)(rs));
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r), ∃ r0. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = h1 -- r -- r0, ∃ r0, obj. ¬ r0 ∈ rs ∧ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r)(r0 := obj), ∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ h1 -- r ∧ (h1 -- r) ++ r = (h1 -- r) ++ r0 |
(h0 ≡ h1)(rs), r ∈ h1, rtc(n, modify(rs))(h0, h1 -- r), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ ∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ (r0 = r ∨ ¬ r0 ∈ h1) ∧ (h1 -- r) ++ r = (h1 -- r) ++ r0, ∃ r0, obj. ¬ r0 ∈ rs ∧ r0 ≠ r ∧ r0 ∈ h1 ∧ (h1 -- r) ++ r = (h1 -- r)(r0 := obj), ∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ r ∧ r0 ∈ h1 ∧ (h1 -- r) ++ r = h1 -- r -- r0
Used simplifier rules: agree-rm-01: ⊦ ¬ r ∈ rs → ((h ≡ (h0 -- r))(rs) ↔ (h ≡ h0)(rs)); ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s)
| (h0 ≡ h1)(rs), r ∈ h1, rtc(n, modify(rs))(h0, h1 -- r), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ ∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ (r0 = r ∨ ¬ r0 ∈ h1) ∧ (h1 -- r) ++ r = (h1 -- r) ++ r0, ∃ r0, obj. ¬ r0 ∈ rs ∧ r0 ≠ r ∧ r0 ∈ h1 ∧ (h1 -- r) ++ r = (h1 -- r)(r0 := obj), ∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ r ∧ r0 ∈ h1 ∧ (h1 -- r) ++ r = h1 -- r -- r0 |
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s) Used terms: r
| (h0 ≡ h1)(rs), r ∈ h1, ¬ modify(rs)((h1 -- r) ++ r, h1), ¬ r ∈ rs, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
⊦ 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)
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ r0. ¬(¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ (h1 -- r) ++ r ∧ h1 = (h1 -- r) ++ r ++ r0), ∀ r0, obj. ¬(¬ r0 ∈ rs ∧ r0 ∈ (h1 -- r) ++ r ∧ h1 = ((h1 -- r) ++ r)(r0 := obj)), ∀ r0. ¬(¬ r0 ∈ rs ∧ r0 ∈ (h1 -- r) ++ r ∧ h1 = ((h1 -- r) ++ r) -- r0), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
Used terms: rs, (h1 -- r) ++ r, h1
| ⊦ 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) |
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ r0. ¬(¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ (h1 -- r) ++ r ∧ h1 = (h1 -- r) ++ r ++ r0), ∀ r0, obj. ¬(¬ r0 ∈ rs ∧ r0 ∈ (h1 -- r) ++ r ∧ h1 = ((h1 -- r) ++ r)(r0 := obj)), ∀ r0. ¬(¬ r0 ∈ rs ∧ r0 ∈ (h1 -- r) ++ r ∧ h1 = ((h1 -- r) ++ r) -- r0), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ r0, obj. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r)(r0 := obj), ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ r0, obj. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r)(r0 := obj), ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, r ∈ rs ∨ ¬ r ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r)(r := h1(r)), ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
Used terms: r, h1(r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, r ∈ rs ∨ ¬ r ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r)(r := h1(r)), ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ r ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r)(r := h1(r)), ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ r ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r)(r := h1(r)), ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ r ∈ (h1 -- r) ++ r ∨ ¬(∀ r0. (r0 ∈ h1 ↔ r0 ∈ ((h1 -- r) ++ r)(r := h1(r))) ∧ (r0 ∈ h1 → h1(r0) = ((h1 -- r) ++ r)(r := h1(r))(r0))), ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
Used terms: h1, ((h1 -- r) ++ r)(r := h1(r))
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ r ∈ (h1 -- r) ++ r ∨ ¬(∀ r0. (r0 ∈ h1 ↔ r0 ∈ ((h1 -- r) ++ r)(r := h1(r))) ∧ (r0 ∈ h1 → h1(r0) = ((h1 -- r) ++ r)(r := h1(r))(r0))), ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ r ∈ (h1 -- r) ++ r ∨ ¬(r0 ∈ h1 ↔ r0 ∈ ((h1 -- r) ++ r)(r := h1(r))) ∨ ¬(r0 ∈ h1 → h1(r0) = ((h1 -- r) ++ r)(r := h1(r))(r0)), ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ¬ r ∈ (h1 -- r) ++ r ∨ ¬(r0 ∈ h1 ↔ r0 ∈ ((h1 -- r) ++ r)(r := h1(r))) ∨ ¬(r0 ∈ h1 → h1(r0) = ((h1 -- r) ++ r)(r := h1(r))(r0)), ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
(h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ (h1 -- r) ++ r, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
¬(r0 ∈ h1 ↔ r0 ∈ ((h1 -- r) ++ r)(r := h1(r))), (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
h1(r0) ≠ ((h1 -- r) ++ r)(r := h1(r))(r0), (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
| (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ (h1 -- r) ++ r, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
Used simplifier rules: agree-rm-01: ⊦ ¬ r ∈ rs → ((h ≡ (h0 -- r))(rs) ↔ (h ≡ h0)(rs)); agree-rm-01: ⊦ ¬ r ∈ rs → ((h ≡ (h0 -- r))(rs) ↔ (h ≡ h0)(rs)); ⊦ r ∈ h → r ≠ null; (s) ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s) r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) Used formulas: (h0 ≡ (h1 -- r))(rs)
| ¬(r0 ∈ h1 ↔ r0 ∈ ((h1 -- r) ++ r)(r := h1(r))), (h0 ≡ h1)(rs), r ∈ h1, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
Used simplifier rules: ⊦ r ∈ h(r0 := o) ↔ r ∈ h; (s) ⊦ r ∈ h → r ≠ null; (s) r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s) Used formulas: r0 ∈ h1
| h1(r0) ≠ ((h1 -- r) ++ r)(r := h1(r))(r0), (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
⊦ h(r0 := o)(r) = (r = r0 ∧ r0 ∈ h ⊃ o;h(r))
h1(r0) ≠ (r0 = r ∧ r ∈ (h1 -- r) ++ r ⊃ h1(r);((h1 -- r) ++ r)(r0)), (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r)
Used terms: (h1 -- r) ++ r, r, h1(r), r0
| ⊦ h(r0 := o)(r) = (r = r0 ∧ r0 ∈ h ⊃ o;h(r)) |
| h1(r0) ≠ (r0 = r ∧ r ∈ (h1 -- r) ++ r ⊃ h1(r);((h1 -- r) ++ r)(r0)), (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, ¬ r ∈ rs, ∀ r0. r0 ∈ rs ∨ ¬ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ ((h1 -- r) ++ r) -- r0, ∀ r0. r0 ∈ rs ∨ r0 = null ∨ r0 ∈ (h1 -- r) ++ r ∨ h1 ≠ (h1 -- r) ++ r ++ r0, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (h0 ≡ (h1 -- r))(rs) ∧ ¬ rtc(n, modify(rs))(h0, h1 -- r) |
h1(r0) ≠ (r0 = r ⊃ h1(r);((h1 -- r) ++ r)(r0)), (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, rtc(n, modify(rs))(h0, h1 -- r), ¬ r ∈ rs, ∀ r1. r1 ∈ rs ∨ r1 = null ∨ r1 ∈ h1 ∨ h1 ≠ (h1 -- r) ++ r ++ r1, ∀ r1. r1 ∈ rs ∨ ¬ r1 ∈ h1 ∨ h1 ≠ ((h1 -- r) ++ r) -- r1, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used simplifier rules: agree-rm-01: ⊦ ¬ r ∈ rs → ((h ≡ (h0 -- r))(rs) ↔ (h ≡ h0)(rs)); ⊦ 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)
| h1(r0) ≠ (r0 = r ⊃ h1(r);((h1 -- r) ++ r)(r0)), (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, rtc(n, modify(rs))(h0, h1 -- r), ¬ r ∈ rs, ∀ r1. r1 ∈ rs ∨ r1 = null ∨ r1 ∈ h1 ∨ h1 ≠ (h1 -- r) ++ r ++ r1, ∀ r1. r1 ∈ rs ∨ ¬ r1 ∈ h1 ∨ h1 ≠ ((h1 -- r) ++ r) -- r1, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
h1(r0) ≠ (r0 = r ⊃ h1(r);((h1 -- r) ++ r)(r0)), r0 ≠ r, (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, rtc(n, modify(rs))(h0, h1 -- r), ¬ r ∈ rs, ∀ r1. r1 ∈ rs ∨ ¬ r1 ∈ h1 ∨ h1 ≠ ((h1 -- r) ++ r) -- r1, ∀ r1. r1 ∈ rs ∨ r1 = null ∨ r1 ∈ h1 ∨ h1 ≠ (h1 -- r) ++ r ++ r1, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used formulas: r0 = r
| h1(r0) ≠ (r0 = r ⊃ h1(r);((h1 -- r) ++ r)(r0)), r0 ≠ r, (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, rtc(n, modify(rs))(h0, h1 -- r), ¬ r ∈ rs, ∀ r1. r1 ∈ rs ∨ ¬ r1 ∈ h1 ∨ h1 ≠ ((h1 -- r) ++ r) -- r1, ∀ r1. r1 ∈ rs ∨ r1 = null ∨ r1 ∈ h1 ∨ h1 ≠ (h1 -- r) ++ r ++ r1, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
h1(r0) ≠ ((h1 -- r) ++ r)(r0), r0 ≠ r, (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, rtc(n, modify(rs))(h0, h1 -- r), ¬ r ∈ rs, ∀ r1. r1 ∈ rs ∨ r1 = null ∨ r1 ∈ h1 ∨ h1 ≠ (h1 -- r) ++ r ++ r1, ∀ r1. r1 ∈ rs ∨ ¬ r1 ∈ h1 ∨ h1 ≠ ((h1 -- r) ++ r) -- r1, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| h1(r0) ≠ ((h1 -- r) ++ r)(r0), r0 ≠ r, (h0 ≡ h1)(rs), r ∈ h1, r0 ∈ h1, rtc(n, modify(rs))(h0, h1 -- r), ¬ r ∈ rs, ∀ r1. r1 ∈ rs ∨ r1 = null ∨ r1 ∈ h1 ∨ h1 ≠ (h1 -- r) ++ r ++ r1, ∀ r1. r1 ∈ rs ∨ ¬ r1 ∈ h1 ∨ h1 ≠ ((h1 -- r) ++ r) -- r1, ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ (h ++ r0)(r) = h(r)
Used simplifier rules: r ∈ h ⊦ r ≠ r0 → (h -- r0)(r) = h(r); (s) ⊦ r ∈ h → r ≠ null; (s) ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s) r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ (h ++ r0)(r) = h(r); (s) Used terms: h1 -- r, r, r0
| r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ (h ++ r0)(r) = h(r) |
| h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
h1 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h1 \ rs) + #(h0 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false) ∧ (h1 ≡ h0)(rs) ∧ ¬ modify*(rs)(h1, h0)
| h1 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
| h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h1 \ rs) + #(h0 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false) ∧ (h1 ≡ h0)(rs) ∧ ¬ modify*(rs)(h1, h0) |
h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (#(h \ rs0) + #(h2 \ rs0) < #(h1 \ rs) + #(h0 \ rs) → ¬ (h ≡ h2)(rs0) ∨ modify*(rs0)(h, h2)) ∧ (h1 ≡ h0)(rs) ∧ ¬ modify*(rs)(h1, h0)
| h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (#(h \ rs0) + #(h2 \ rs0) < #(h1 \ rs) + #(h0 \ rs) → ¬ (h ≡ h2)(rs0) ∨ modify*(rs0)(h, h2)) ∧ (h1 ≡ h0)(rs) ∧ ¬ modify*(rs)(h1, h0) |
h0 \ rs ≠ ∅, #(h \ rs0) + #(h2 \ rs0) < #(h1 \ rs) + #(h0 \ rs), (h ≡ h2)(rs0), (h0 ≡ h1)(rs), ¬ modify*(rs0)(h, h2), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ (h1 ≡ h0)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), modify*(rs)(h1, h0), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
| h0 \ rs ≠ ∅, #(h \ rs0) + #(h2 \ rs0) < #(h1 \ rs) + #(h0 \ rs), (h ≡ h2)(rs0), (h0 ≡ h1)(rs), ¬ modify*(rs0)(h, h2), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic Used terms: h, rs0, h2
| h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), ¬ (h1 ≡ h0)(rs), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
h0 \ rs ≠ ∅, ¬ (h1 ≡ h0)(rs), ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h0, h1, rs
| ⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| h0 \ rs ≠ ∅, ¬ (h1 ≡ h0)(rs), ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
h0 \ rs ≠ ∅, ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∃ r. ¬(r ∈ rs → (r ∈ h1 ↔ r ∈ h0) ∧ (r ∈ h1 → h1(r) = h0(r))), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦
Used terms: h1, h0, rs
| ⊦ (h0 ≡ h1)(rs) ↔ (∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| h0 \ rs ≠ ∅, ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∃ r. ¬(r ∈ rs → (r ∈ h1 ↔ r ∈ h0) ∧ (r ∈ h1 → h1(r) = h0(r))), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
# rs ≠ 0, h0 \ rs ≠ ∅, rs ≠ ∅, r ∈ rs, ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h1 ↔ r ∈ h0) ∧ (r ∈ h1 → h1(r) = h0(r))
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| # rs ≠ 0, h0 \ rs ≠ ∅, rs ≠ ∅, r ∈ rs, ¬ modify*(rs)(h0, h1), ∀ r. r ∈ rs → (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ (r ∈ h1 ↔ r ∈ h0) ∧ (r ∈ h1 → h1(r) = h0(r)) |
Used terms: r
| h0 \ rs ≠ ∅, (h0 ≡ h1)(rs), modify*(rs)(h1, h0), ¬ modify*(rs)(h0, h1), ∀ h, rs0, h2. #(h \ rs0) + #(h2 \ rs0) < #(h0 \ rs) + #(h1 \ rs) → (h ≡ h2)(rs0) ∧ ¬ modify*(rs0)(h, h2) → false ⊦ |
⊦ modify*(rs)(h0, h1) ↔ modify*(rs)(h1, h0)
Used terms: rs, h0, h1
| ⊦ 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.