let iof p j =
  assert (j >= 0);
  let rec iof w j =
    match w with
    | [] -> iof p.v j
    | false :: w' -> 1 + iof w' j
    | true :: w' -> if j = 1 then 1 else 1 + iof w' (j - 1)
  in
  if j = 0 then 0
  else iof p.u j