| # x = # lax, n ≤ # lax, ∀ n. n < # lax → lax[n].size = x[n].flashsize ⊦ # prefixn(n, x) = # prefixn(n, lax) ∧ (∀ n0. n0 < # prefixn(n, x) → prefixn(n, lax)[n0].size = prefixn(n, x)[n0].flashsize) |
# x = # lax, n0 < n, n0 < # lax, n ≤ # lax, ∀ n. n < # lax → lax[n].size = x[n].flashsize ⊦ lax[n0].size = x[n0].flashsize, lax = []
Used simplifier rules: ⊦ m < n ∧ m < # x → prefixn(n, x)[m] = x[m]; (s)% ⊦ # lax = 0 ↔ lax = []; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic% ⊦ m < n ∧ m < # lax → prefixn(n, lax)[m] = lax[m]; (s)% ⊦ m < n → n ≠ 0; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%n ≤ # lax ⊦ # prefixn(n, lax) = n; (s)%n ≤ # x ⊦ # prefixn(n, x) = n; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)