val N:ℕ; val M:ℕ; type index = ℤ[-N,N]; type elem = ℤ[-M,M]; type array = Array[N,elem]; proc maximumValue(a:array): elem { var m:elem; var i:index; m ≔ -1; i ≔ 0; while i < N do { if a[i] > m then m ≔ a[i]; i ≔ i+1; } return m; }