| 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), ∃ j. max(getintarray(a, st)) = st[a -- j '] .intval ∧ 0 ≤ j ∧ j < st[a -- _length] .intval, ∀ i1. ¬ 0 ≤ i1 ∨ ¬ i1 ≤ i2 ∨ st[a -- i1 '] .intval ≠ max(getintarray(a, st)), ∀ i. i ∈ getintarray(a, st) → i ≤ 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) |
max(getintarray(a, st)) = st[a -- j '] .intval, i0 = 0, a0 = a, 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), 0 ≤ j, j ≤ i2, 0 ≤ i2, ∀ i. i ∈ getintarray(a, st) → i ≤ max(getintarray(a, 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 < j + 1 ↔ i ≤ j], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ (~1) < i ↔ 0 ≤ i], [CSIMPSEQ : ⊦ ((* j)) < i0 + ((* j0)) ↔ j - j0 < i0], [CSIMPFORWARD : ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPFORWARD : ⊦ i < j ∧ 0 ≤ i → 0 < j])]]