| # buf2 = n2 + n0 + n, # buf = # buf2, UBI_READ_RETRIES = n1 + m4, pebs[m3] = mkpeb(buf1, m2, false), subarray(buf, n0 + n, n2) = subarray(buf2, n0 + n, n2), m3 < # pebs, mtd-cons(pebs), range=(buf, 0, buf2, 0, n0), m1 + n ≤ PEB_SIZE, n0 + n ≤ # buf2, m4 ≤ UBI_READ_RETRIES + 1, m4 ≤ UBI_READ_RETRIES, n0 ≤ # buf2, (n0 + n) + n2 ≤ # buf, (n0 + n) + n2 ≤ # buf2, ⌊err1⌋ ⊦ subarray(buf, n0 + n, n2) = subarray(buf2, n0 + n, n2) ∧ subarray(buf, 0, n0) = subarray(buf2, 0, n0) |
# buf2 = n2 + n0 + n, # buf = # buf2, UBI_READ_RETRIES = n1 + m4, pebs[m3] = mkpeb(buf1, m2, false), subarray(buf, n0 + n, n2) = subarray(buf2, n0 + n, n2), m3 < # pebs, mtd-cons(pebs), range=(buf, 0, buf2, 0, n0), m1 + n ≤ PEB_SIZE, n0 + n ≤ # buf2, m4 ≤ UBI_READ_RETRIES + 1, m4 ≤ UBI_READ_RETRIES, n0 ≤ # buf2, ⌊err1⌋ ⊦ subarray(buf, 0, n0) = subarray(buf2, 0, n0)
Used simplifier rules: ⊦ m ≤ m; (s)% ⊦ m ≤ n → (n ≤ m ↔ m = n); (s)%let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic