| s0 = s ++ a2 ∧ s0 ≠ s, # s0 ≠ 1 → a0 ≠ b ∧ a0 ∈ s0 ∧ b ∈ s0 ⊦ s0 = ∅, # s0 = 0, a ∈ s0, ∃ a1, b0. a1 ≠ b0 ∧ (a1 = a ∨ a1 ∈ s0) ∧ (b0 = a ∨ b0 ∈ s0) |
# s ≠ 0 → a0 ≠ b ∧ (a0 = a2 ∨ a0 ∈ s) ∧ (b = a2 ∨ b ∈ s) ⊦ a = a2, a2 ∈ s, a ∈ s, ∃ a1, b0. a1 ≠ b0 ∧ (a1 = a ∨ a1 = a2 ∨ a1 ∈ s) ∧ (b0 = a ∨ b0 = a2 ∨ b0 ∈ s)
Used simplifier rules: ne: ⊦ ∅ ≠ s ++ a;%eq-03: ⊦ s ++ a = s ↔ a ∈ s;%Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1;%add: ⊦ ¬ a ∈ s ++ b ↔ a ≠ b ∧ ¬ a ∈ s;%rax: ⊦ a ∈ s ++ b ↔ ¬ ¬(a = b ∨ a ∈ s);%one-03: ⊦ 1 = m + 1 ↔ m = 0; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%oz: ⊦ m + 1 ≠ 0; from specification nat-basic2