These modules are available through the From Stdlib Require Import command.
This table of components covers top-level modules intended for direct use. For an exhaustive listing of standard-library modules (public and internal) as well as the internal dependencies between them, see the subcomponent index. There is also an alphabetical index of all modules and objects.
To find specific lemmas and defintions in the standard library, do From Stdlib Require All. (no Import!) and use the Search command, for example Search (_ * (_ + _)).
nat. The first-principles construction in this module is intended for learning, use for structural recursion, and for type indices in advanced dependently typed programming. For code that treats natural numbers opaquely, consider NArith. N. For Peano induction, use N.peano_ind.Z. Induction: Z.peano_ind, Z.order_induction_0 or, for non-negative, Wf_Z.natlike_ind.Qc and Q). Also consider rat from math-comp or bigQ from coq-bignums.spec_float, defined following the fully specified subset of IEEE-754 (without NaN payloads). Continued in flocq.Documented in the Rocq Prover manual: Automatic Solvers.
nat (the length). This construction is uniquely suitable for nesting with other inductive types, but direct proofs about it require skilled use of dependent pattern matching with an in clause. Indirect reasoning about vectors converted to lists is often preferred. If nesting is not needed, consider using list, potentially paired with a proof about its length.nat (the strict upper bound). This construction matches the index space of Vector, but again direct proofs about it require skilled use of dependent pattern matching with an in clause. Further, Fin.t n is inhabited only if n is nonzero, so a natural number cannot be a always converted to Fin.t (unlike Zmod 0, which is isomorphic to Z).Rocq Prover documentation: Primitive Objects.