| # s0 ≠ 0 ∧ # s0 ≠ 1 → a0 ≠ b ∧ a0 ∈ s0 ∧ b ∈ s0 ⊦ #(s0 ++ a) = 1, #(s0 ++ a) = 0, a ∈ s0, ∃ a1, b0. a1 ≠ b0 ∧ (a1 = a ∨ a1 ∈ s0) ∧ (b0 = a ∨ b0 ∈ s0) |
# s0 ≠ 1 → a0 ≠ b ∧ a0 ∈ s0 ∧ b ∈ s0 ⊦ # s0 = 0, s0 = ∅, a ∈ s0, ∃ a1, b0. a1 ≠ b0 ∧ (a1 = a ∨ a1 ∈ s0) ∧ (b0 = a ∨ b0 ∈ s0)
Used simplifier rules: Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1;%size-zero: ⊦ # s ≠ 0 → s ≠ ∅;%size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0;% ⊦ m + n = 1 ↔ m = 0 ∧ n = 1 ∨ n = 0 ∧ m = 1; (ws)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + 1 ≠ 0; (s)