| m ≤ # kar ⊦ (∀ m0, m1. m0 < # kar ∧ m0 < m ∧ m1 < # kar ∧ m1 < m ∧ m0 ≠ m1 → kar[m0] ≠ kar[m1]) ↔ # keyset(kar, m) = m |
m0 +1 ≤ # kar, ∀ kar. m0 ≤ # kar → ((∀ m2, m1. m2 < # kar ∧ m2 < m0 ∧ m1 < # kar ∧ m1 < m0 ∧ m2 ≠ m1 → kar[m2] ≠ kar[m1]) ↔ # keyset(kar, m0) = m0) ⊦ (∀ m2, m1. m2 < # kar ∧ m2 < m0 +1 ∧ m1 < # kar ∧ m1 < m0 +1 ∧ m2 ≠ m1 → kar[m2] ≠ kar[m1]) ↔ # keyset(kar, m0 +1) = m0 +1
Used simplifier rules: keyset-base: ⊦ keyset(kar, 0) = ∅;%nat freely generated by 0, +1;;% ⊦ ¬ m < 0; (s)% ⊦ # ∅ = 0; (s)