| a ∈ st ⊦ ∃ st0. ¬ a ∈ st0 ∧ st = st0[a, st[a]] |
a ∈ st0[elem, data], ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]]
Used simplifier rules: gen: ⊦ ; In-empty: ⊦ ¬ a ∈ ∅;
| a ∈ st0[elem, data], ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]] |
⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st
∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]), a = elem ∨ a ∈ st0 ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]]
Used terms: data, elem, st0, a
| ⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st |
| ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]), a = elem ∨ a ∈ st0 ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]] |
a = elem, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]]
a ∈ st0, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]]
| a = elem, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]] |
∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data]
Used simplifier rules: At-same: ⊦ st[a, d][a] = d;
| ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data] |
elem ∈ st0 → (∃ st1. ¬ elem ∈ st1 ∧ st0 = st1[elem, st0[elem]]), ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data]
Used terms: elem
| elem ∈ st0 → (∃ st1. ¬ elem ∈ st1 ∧ st0 = st1[elem, st0[elem]]), ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data] |
elem ∈ st0 → ¬ elem ∈ st1 ∧ st0 = st1[elem, st0[elem]], ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data]
| elem ∈ st0 → ¬ elem ∈ st1 ∧ st0 = st1[elem, st0[elem]], ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data] |
elem ∈ st0, elem ∈ st0 → ¬ elem ∈ st1 ∧ st0 = st1[elem, st0[elem]], ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data]
Used simplifier rules: inj-put: ⊦ ¬ a ∈ st ∧ ¬ a ∈ st0 → (st[a, d] = st0[a, d] ↔ st = st0); Used formulas: elem ∈ st0
| elem ∈ st0, elem ∈ st0 → ¬ elem ∈ st1 ∧ st0 = st1[elem, st0[elem]], ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data] |
st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data]
| st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data] |
st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data], ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data]
Used terms: st1
| st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data], ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data] |
st0 = st1[elem, st0[elem]], st0[elem, data] ≠ st1[elem, data], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data]
| st0 = st1[elem, st0[elem]], st0[elem, data] ≠ st1[elem, data], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data] |
Used simplifier rules: insins: ⊦ st[a, d0][a, d] = st[a, d]; inj-put: ⊦ ¬ a ∈ st ∧ ¬ a ∈ st0 → (st[a, d] = st0[a, d] ↔ st = st0);
| a ∈ st0, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]] |
a ∈ st0, a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]), ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]]
Used terms: a
| a ∈ st0, a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]), ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]] |
st0 = st1[a, st0[a]], a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]]
| st0 = st1[a, st0[a]], a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]] |
⊦ a ≠ b → st[b, d][a] = st[a]
a = elem, st0 = st1[a, st0[a]], a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]]
st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]]
Used terms: a, data, elem, st0
| ⊦ a ≠ b → st[b, d][a] = st[a] |
| a = elem, st0 = st1[a, st0[a]], a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[elem, data][a]] |
st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
Used simplifier rules: At-same: ⊦ st[a, d][a] = d;
| st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data], ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data]
Used terms: st1
| st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data], ¬ elem ∈ st1 ∧ st0[elem, data] = st1[elem, data] |
st0 = st1[elem, st0[elem]], st0[elem, data] ≠ st1[elem, data], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
| st0 = st1[elem, st0[elem]], st0[elem, data] ≠ st1[elem, data], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1[a] = st2[a])
st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]), ∃ a. ¬((a ∈ st0[elem, data] ↔ a ∈ st1[elem, data]) ∧ st0[elem, data][a] = st1[elem, data][a]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
Used terms: st1[elem, data], st0[elem, data]
| ⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1[a] = st2[a]) |
| st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]), ∃ a. ¬((a ∈ st0[elem, data] ↔ a ∈ st1[elem, data]) ∧ st0[elem, data][a] = st1[elem, data][a]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data], (elem0 ∈ st0[elem, data] ↔ elem0 ∈ st1[elem, data]) ∧ st0[elem, data][elem0] = st1[elem, data][elem0]
| st0 = st1[elem, st0[elem]], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data], (elem0 ∈ st0[elem, data] ↔ elem0 ∈ st1[elem, data]) ∧ st0[elem, data][elem0] = st1[elem, data][elem0] |
st0 = st1[elem, st0[elem]], ¬(elem0 ∈ st0[elem, data] ↔ elem0 ∈ st1[elem, data]), elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
st0 = st1[elem, st0[elem]], st0[elem, data][elem0] ≠ st1[elem, data][elem0], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
| st0 = st1[elem, st0[elem]], ¬(elem0 ∈ st0[elem, data] ↔ elem0 ∈ st1[elem, data]), elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st
st0 = st1[elem, st0[elem]], ¬(elem0 = elem ∨ elem0 ∈ st0 ↔ elem0 ∈ st1[elem, data]), elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
Used terms: data, elem, st0, elem0
| ⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st |
| st0 = st1[elem, st0[elem]], ¬(elem0 = elem ∨ elem0 ∈ st0 ↔ elem0 ∈ st1[elem, data]), elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
st0 = st1[elem, st0[elem]], ¬(elem0 ∈ st0 ↔ elem0 ∈ st1[elem, data]), elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
| st0 = st1[elem, st0[elem]], ¬(elem0 ∈ st0 ↔ elem0 ∈ st1[elem, data]), elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
st0 = st1[elem, st0[elem]], elem ∈ st0, elem0 ∈ st0, ¬ elem0 ∈ st1[elem, data], ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
st0 = st1[elem, st0[elem]], elem ∈ st0, elem0 ∈ st1[elem, data], ¬ elem0 ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
| st0 = st1[elem, st0[elem]], elem ∈ st0, elem0 ∈ st0, ¬ elem0 ∈ st1[elem, data], ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
Used simplifier rules: In-insert: ⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st;
| st0 = st1[elem, st0[elem]], elem ∈ st0, elem0 ∈ st1[elem, data], ¬ elem0 ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
Used simplifier rules: In-insert: ⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st;
| st0 = st1[elem, st0[elem]], st0[elem, data][elem0] ≠ st1[elem, data][elem0], elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
⊦ a ≠ b → st[b, d][a] = st[a]
st0 = st1[elem, st0[elem]], st0[elem0] ≠ st1[elem, data][elem0], elem0 ≠ elem, elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
Used simplifier rules: At-same: ⊦ st[a, d][a] = d; Used terms: elem0, data, elem, st0
| ⊦ a ≠ b → st[b, d][a] = st[a] |
| st0 = st1[elem, st0[elem]], st0[elem0] ≠ st1[elem, data][elem0], elem0 ≠ elem, elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
st0 = st1[elem, st0[elem]], st0[elem0] ≠ st1[elem0], elem0 ≠ elem, elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data]
Used simplifier rules: At-other: ⊦ a ≠ b → st[b, d][a] = st[a];
| st0 = st1[elem, st0[elem]], st0[elem0] ≠ st1[elem0], elem0 ≠ elem, elem ∈ st0, ¬ elem ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st. ¬ elem ∈ st ∧ st0[elem, data] = st[elem, data] |
Used simplifier rules: At-other: ⊦ a ≠ b → st[b, d][a] = st[a];
| st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]] |
st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]]
| st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]] |
st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]], ¬ a ∈ st1[elem, data] ∧ st0[elem, data] = st1[elem, data][a, st0[a]]
Used terms: st1[elem, data]
| st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]], ¬ a ∈ st1[elem, data] ∧ st0[elem, data] = st1[elem, data][a, st0[a]] |
st0 = st1[a, st0[a]], st0[elem, data] ≠ st1[elem, data][a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]]
Used simplifier rules: In-insert: ⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st;
| st0 = st1[a, st0[a]], st0[elem, data] ≠ st1[elem, data][a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]] |
⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1[a] = st2[a])
st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]), ∃ a0. ¬((a0 ∈ st0[elem, data] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st0[elem, data][a0] = st1[elem, data][a, st0[a]][a0]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]]
Used terms: st1[elem, data][a, st0[a]], st0[elem, data]
| ⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1[a] = st2[a]) |
| st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]), ∃ a0. ¬((a0 ∈ st0[elem, data] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st0[elem, data][a0] = st1[elem, data][a, st0[a]][a0]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]] |
st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]], (a0 ∈ st0[elem, data] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st0[elem, data][a0] = st1[elem, data][a, st0[a]][a0]
| st0 = st1[a, st0[a]], a ≠ elem, a ∈ st0, ¬ a ∈ st1, ∀ a. a ∈ st0 → (∃ st1. ¬ a ∈ st1 ∧ st0 = st1[a, st0[a]]) ⊦ ∃ st1. ¬ a ∈ st1 ∧ st0[elem, data] = st1[a, st0[a]], (a0 ∈ st0[elem, data] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st0[elem, data][a0] = st1[elem, data][a, st0[a]][a0] |
a ≠ elem, a ∈ st1[a, st0[a]], ¬ a ∈ st1, ∀ a0. a0 ∈ st1[a, st0[a]] → (∃ st. ¬ a0 ∈ st ∧ st1[a, st0[a]] = st[a0, st1[a, st0[a]][a0]]) ⊦ ∃ st. ¬ a ∈ st ∧ st1[a, st0[a]][elem, data] = st[a, st1[a, st0[a]][a]], (a0 ∈ st1[a, st0[a]][elem, data] ↔ a0 ∈ st1[elem, data][a, st1[a, st0[a]][a]]) ∧ st1[a, st0[a]][elem, data][a0] = st1[elem, data][a, st1[a, st0[a]][a]][a0]
| a ≠ elem, a ∈ st1[a, st0[a]], ¬ a ∈ st1, ∀ a0. a0 ∈ st1[a, st0[a]] → (∃ st. ¬ a0 ∈ st ∧ st1[a, st0[a]] = st[a0, st1[a, st0[a]][a0]]) ⊦ ∃ st. ¬ a ∈ st ∧ st1[a, st0[a]][elem, data] = st[a, st1[a, st0[a]][a]], (a0 ∈ st1[a, st0[a]][elem, data] ↔ a0 ∈ st1[elem, data][a, st1[a, st0[a]][a]]) ∧ st1[a, st0[a]][elem, data][a0] = st1[elem, data][a, st1[a, st0[a]][a]][a0] |
a ≠ elem, ¬ a ∈ st1, ∀ a0. a0 ∈ st1[a, st0[a]] → (∃ st. ¬ a0 ∈ st ∧ st1[a, st0[a]] = st[a0, st1[a, st0[a]][a0]]) ⊦ ∃ st. ¬ a ∈ st ∧ st1[a, st0[a]][elem, data] = st[a, st0[a]], (a0 ∈ st1[a, st0[a]][elem, data] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st1[a, st0[a]][elem, data][a0] = st1[elem, data][a, st0[a]][a0]
Used simplifier rules: In-insert: ⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st; At-same: ⊦ st[a, d][a] = d;
| a ≠ elem, ¬ a ∈ st1, ∀ a0. a0 ∈ st1[a, st0[a]] → (∃ st. ¬ a0 ∈ st ∧ st1[a, st0[a]] = st[a0, st1[a, st0[a]][a0]]) ⊦ ∃ st. ¬ a ∈ st ∧ st1[a, st0[a]][elem, data] = st[a, st0[a]], (a0 ∈ st1[a, st0[a]][elem, data] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st1[a, st0[a]][elem, data][a0] = st1[elem, data][a, st0[a]][a0] |
a ≠ elem, a0 ≠ elem, ¬ a ∈ st1, ∀ a0. a0 ∈ st1[a, st0[a]] → (∃ st. ¬ a0 ∈ st ∧ st1[a, st0[a]] = st[a0, st1[a, st0[a]][a0]]) ⊦ ∃ st. ¬ a ∈ st ∧ st1[a, st0[a]][elem, data] = st[a, st0[a]], (a0 ∈ st1[a, st0[a]][elem, data] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st1[a, st0[a]][elem, data][a0] = st1[elem, data][a, st0[a]][a0]
Used simplifier rules: in-neq: ⊦ a ≠ b → (a ∈ st[b, d] ↔ a ∈ st); At-other: ⊦ a ≠ b → st[b, d][a] = st[a]; At-same: ⊦ st[a, d][a] = d; In-insert: ⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st; Used formulas: a0 = elem
| a ≠ elem, a0 ≠ elem, ¬ a ∈ st1, ∀ a0. a0 ∈ st1[a, st0[a]] → (∃ st. ¬ a0 ∈ st ∧ st1[a, st0[a]] = st[a0, st1[a, st0[a]][a0]]) ⊦ ∃ st. ¬ a ∈ st ∧ st1[a, st0[a]][elem, data] = st[a, st0[a]], (a0 ∈ st1[a, st0[a]][elem, data] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st1[a, st0[a]][elem, data][a0] = st1[elem, data][a, st0[a]][a0] |
a ≠ elem, a0 ≠ elem, ¬ a ∈ st1, ∀ a0. a0 ∈ st1[a, st0[a]] → (∃ st. ¬ a0 ∈ st ∧ st1[a, st0[a]] = st[a0, st1[a, st0[a]][a0]]) ⊦ ∃ st. ¬ a ∈ st ∧ st1[a, st0[a]][elem, data] = st[a, st0[a]], (a0 ∈ st1[a, st0[a]] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st1[a, st0[a]][a0] = st1[elem, data][a, st0[a]][a0]
Used simplifier rules: in-neq: ⊦ a ≠ b → (a ∈ st[b, d] ↔ a ∈ st); At-other: ⊦ a ≠ b → st[b, d][a] = st[a];
| a ≠ elem, a0 ≠ elem, ¬ a ∈ st1, ∀ a0. a0 ∈ st1[a, st0[a]] → (∃ st. ¬ a0 ∈ st ∧ st1[a, st0[a]] = st[a0, st1[a, st0[a]][a0]]) ⊦ ∃ st. ¬ a ∈ st ∧ st1[a, st0[a]][elem, data] = st[a, st0[a]], (a0 ∈ st1[a, st0[a]] ↔ a0 ∈ st1[elem, data][a, st0[a]]) ∧ st1[a, st0[a]][a0] = st1[elem, data][a, st0[a]][a0] |
Used simplifier rules: At-same: ⊦ st[a, d][a] = d; In-insert: ⊦ a ∈ st[b, d] ↔ a = b ∨ a ∈ st; in-neq: ⊦ a ≠ b → (a ∈ st[b, d] ↔ a ∈ st); At-other: ⊦ a ≠ b → st[b, d][a] = st[a]; Used formulas: a0 = a
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.