Documentation

Lean.ProjFns

Given a structure S, Lean automatically creates an auxiliary definition (projection function) for each field. This structure caches information about these auxiliary definitions.

  • ctorName : Name

    Constructor associated with the auxiliary projection function.

  • numParams : Nat

    Number of parameters in the structure

  • i : Nat

    The field index associated with the auxiliary projection function.

  • fromClass : Bool

    true if the structure is a class.

Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[export lean_mk_projection_info]
      def Lean.mkProjectionInfoEx (ctorName : Name) (numParams i : Nat) (fromClass : Bool) :
      Equations
      • Lean.mkProjectionInfoEx ctorName numParams i fromClass = { ctorName := ctorName, numParams := numParams, i := i, fromClass := fromClass }
      Instances For
        @[export lean_projection_info_from_class]
        Equations
        Instances For
          def Lean.addProjectionFnInfo (env : Environment) (projName ctorName : Name) (numParams i : Nat) (fromClass : Bool) :
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Equations
            Instances For

              If projName is the name of a projection function, return the associated structure name

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def Lean.isProjectionFn {m : TypeType} [MonadEnv m] [Monad m] (declName : Name) :
                Equations
                Instances For
                  Equations
                  Instances For

                    Auxiliary parent projection created when a parent structure cannot be represented as a subobject (e.g., due to diamond inheritance). Unlike regular projections, these construct the parent value from individual fields rather than extracting a single field. Example: AddMonoid'.toAddZero' when AddZero' cannot be a subobject of AddMonoid'.

                    • numParams : Nat

                      Number of parameters in the child structure.

                    • fromClass : Bool

                      true if the child structure is a class.

                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def Lean.addAuxParentProjectionInfo (env : Environment) (projName : Name) (numParams : Nat) (fromClass : Bool) :
                        Equations
                        Instances For
                          Equations
                          Instances For