| 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), ¬ init(st) ∨ st[_mode] ≠ noval ∨ a0 ≠ a ∨ ¬ okarray(a, int_type, st) ∨ getintarray(a, st) = [] ∨ (∀ i. ¬ (0 ≤ i0 ∧ i0 ≤ i ∧ i ≤ i2 ∧ i2 < st[a0 -- _length] .intval ∧ st[a -- i '] .intval = max(getintarray(a, 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) |
st[a -- _length] .intval = i2 + 1, st[_mode] = noval, a0 = a, i0 = 0, a ≠ jvmref, getintarray(a, st) ≠ [], initdone(`swt.ArrayMax' .class, st), a ∈ st, init(st), okarray(a, int_type, st), ∀ i1. ¬ 0 ≤ i1 ∨ ¬ i1 ≤ i2 ∨ st[a -- i1 '] .intval ≠ max(getintarray(a, 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 < i], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i < j + 1 ↔ i ≤ j])]]