original.name="While_Valid_5"
======
>>> main.whiley
type nat is (int x) where x >= 0
function extract(int[] ls) -> nat[]:
int i = 0
int[] rs = [0;|ls|]
while i < |ls|
where i >= 0
where |rs| == |ls|
where all { j in 0..|rs| | rs[j] >= 0 }:
//
if ls[i] >= 0:
rs[i] = ls[i]
i = i + 1
//
return (nat[]) rs
public export method test() :
int[] rs = extract([-2, -3, 1, 2, -23, 3, 2345, 4, 5])
assume rs == [ 0, 0, 1, 2, 0, 3, 2345, 4, 5]
---