Require Import FunInd.

Set Universe Polymorphism.
Set Primitive Projections.
Set Implicit Arguments.
Set Strongly Strict Implicit.

Function first_false (n : nat) (f : nat -> bool) : option nat :=
  match n with
  | O => None
  | S m =>
    match first_false m f with
    | (Some _) as s => s
    | None => if f m then None else Some m
    end
  end.
(* undefined universe *)
