(* example dimension *) let n = 5 (* example adjacency matrix *) (* a : int array array *) let a = [| [| 1; 0; 0; 1; 0 |]; [| 0; 0; 1; 0; 0 |]; [| 0; 1; 0; 0; 0 |]; [| 0; 0; 1; 1; 1 |]; [| 0; 0; 1; 0; 1 |] |] (* input program *) (* f : int array array -> int array -> int array *) let f a v = let v' = Array.make n 0 in for i = 0 to n-1 do for j = 0 to n-1 do v'.(i) <- v'.(i) + a.(i).(j) * v.(j) done done; v' (* example vector *) let v = [| 3; 1; 5; -2; 4 |] (* example execution *) let _ = assert (f a v = [|1; 5; 1; 7; 9|])