This is a program that finds the location k of the first positive element
(a[k]>0) in an array a[1:N] and returns N+1 if there is none such.
{N > 0}
i1 := 1
{N > 0, i1=1, i2=2, k1=N+1, k2=N+1} |
||
S1: while {1 <
k1 < N+1,
{1 < k1 < N+1,
odd(i1), 1
< i1 < k1+1,
|
S2: while {1 <
k2 < N+1,
{1 < k2 < N+1,
even(i2), 1
< i2 < k2+1,
|
|
{1 < k1,
k2< N+1, odd(i1), even(i2),
k1 < i1 < k1+1, k2<
i2 < k2+1,
a[1,2,...,min(i1,i2)-2] < 0, k1<N => a[k1]>0, k2<N => a[k2]>0} k := min(k1,k2) {1 < k <N+1, a[1:k-1] <0, k<N => a[k]>0} |