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