let rec laws iter gen func = if iter <= 0 then None else let input = gen () in try if not (func input) then Some input else laws (iter-1) gen func with _ -> Some input