| ⊦ # ar.mapIf(φ, f, 0) = # ar ∧ (∀ n. n < # ar.mapIf(φ, f, 0) → ar.mapIf(φ, f, 0)[n] = ar[n]) |
n ≤ # ar ⊦ # ar.mapIf(φ, f, n) = # ar
n < # ar ⊦ ar.mapIf(φ, f, 0)[n] = ar[n]
Used simplifier rules: map-ifn-size: n ≤ # ar ⊦ # ar.mapIf(φ, f, n) = # ar;% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ 0 ≤ m; (s)