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
    @[export lean_mk_projection_info]
    def Lean.mkProjectionInfoEx (ctorName : Name) (numParams i : Nat) (fromClass : Bool) :
    Instances For
      @[export lean_projection_info_from_class]
      Instances For
        def Lean.addProjectionFnInfo (env : Environment) (projName ctorName : Name) (numParams i : Nat) (fromClass : Bool) :
        Instances For
          Instances For

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

            Instances For
              def Lean.isProjectionFn {m : TypeType} [MonadEnv m] [Monad m] (declName : Name) :
              Instances For
                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
                    def Lean.addAuxParentProjectionInfo (env : Environment) (projName : Name) (numParams : Nat) (fromClass : Bool) :
                    Instances For