| st[_mode] = noval, getintarray(a, st) ≠ [], a ≠ jvmref, okarray(a, int_type, st), init(st), a ∈ st, st[_mode] = noval, initdone(`swt.ArrayMax' .class, st), a0 = a, i0 = 0, st[_mode] = noval, i1 = val2int(coerce(st[a0 -- mkfs(`*Array*' .class, int_type, `length' .field) '], int_type)), a0 ≠ jvmref, i2 = i1 - 1 ⊦ 〈st; while (i0 != i2) { if (a0[i0] <= a0[i2]) i0++; else i2--; }〉 〈st; i = i0; 〉 (st[a -- i '] .intval = max(getintarray(a, st)) ∧ 0 ≤ i ∧ i < st[a -- _length] .intval) |
a0 = a, i0 = 0, st[_mode] = noval, st[a -- _length] .intval = i2 + 1, getintarray(a, st) ≠ [], a ≠ jvmref, okarray(a, int_type, st), init(st), a ∈ st, initdone(`swt.ArrayMax' .class, st) ⊦ 〈st; while (i0 != i2) { if (a0[i0] <= a0[i2]) i0++; else i2--; }〉 〈st; i = i0; 〉 (st[a -- i '] .intval = max(getintarray(a, st)) ∧ 0 ≤ i ∧ i < st[a -- _length] .intval)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ i - j = i0 ↔ i = i0 + j], [CSIMPSEQ : ⊦ okarray(r, ty, st) → val2int(st[r -- _length]) = st[r -- _length] .intval], [CSIMPSEQ : ⊦ okarray(r, ty, st) → intval (st[r -- _length] .intval) = st[r -- _length]], [CSIMPSEQ : ⊦ coerce(val, int_type) = intval(val .intval)], [CSIMPSEQ : ⊦ mkfs (`*Array*' .class, int_type, `length' .field) ' = _length])]]