Documentation

Lean.Compiler.LCNF.InferType

Type inference for LCNF #

@[reducible, inline]

We use a regular local context to store temporary local declarations created during type inference.

Instances For
    @[inline]
    def Lean.Compiler.LCNF.InferType.Pure.withLocalDecl {α : Type} (binderName : Name) (type : Expr) (binderInfo : BinderInfo) (k : ExprInferTypeM α) :
    Instances For
      def Lean.Compiler.LCNF.inferAppType {pu : Purity} (fnType : Expr) (args : Array (Arg pu)) :
      Instances For
        Instances For
          @[irreducible]
          Instances For
            Instances For
              Instances For
                def Lean.Compiler.LCNF.mkAuxLetDecl {pu : Purity} (e : LetValue pu) (prefixName : Name := `_x) :
                Instances For
                  Instances For
                    Instances For
                      def Lean.Compiler.LCNF.mkAuxJpDecl {pu : Purity} (params : Array (Param pu)) (code : Code pu) (prefixName : Name := `_jp) :
                      Instances For
                        def Lean.Compiler.LCNF.mkAuxJpDecl' {pu : Purity} (param : Param pu) (code : Code pu) (prefixName : Name := `_jp) :
                        Instances For

                          Return true if type should be erased. See item 1 in the note above where x ◾ ◾ is a proposition and should be erased when the universe level parameter is set to 0.

                          Remark: predVars is a bitmask that indicates whether de-bruijn variables are predicates or not. That is, #i is a predicate if predVars[predVars.size - i - 1] = true

                          Instances For

                            Return true if the given LCNF are equivalent. List Nat and (fun x => List x) Nat are both equivalent.