val N:ℕ; val M:ℕ; type index = ℤ[-N,N]; type elem = ℤ[-M,M]; type array = Array[N,elem]; proc maximumElement(a:array, n:index): elem { var m:elem ≔ -1; for i:index with 0 ≤ i ∧ i < n do { if a[i] > m then m ≔ a[i]; } return m; } proc maximumIndex(a:array, n:index): index { var m:elem = -1; var p:index = 1; for i:index with 1 ≤ i ∧ i < n do { if a[i] > m then { p ≔ i; m ≔ a[p]; } } return p; }