fact: Definition count_nondep_binders (T: Type) : M nat := (mfix1 go (T : Type) : M nat := mmatch T return M nat with | [? T1 T2] (T1 -> T2) => r <- go T2; M.ret (S r) | [? T1 T2] (forall x:T1, T2 x) => nu (FreshFromStr "name") mNone (fun e:T1=>go (T2 e)) | _ => M.ret 0 end) T.
imports: Mtac2(Base Tactics Datatypes List Sorts) Strings.String