Documentation

Lean.Meta.Sym.AlphaShareBuilder

Helper functions for constructing maximally shared expressions from maximally shared expressions. That is, mkAppS f a assumes that f and a are maximally shared.

These functions are in the Internal namespace because they can be easily misused. We use them to construct safe functions.

Instances
    @[implicit_reducible, always_inline]
    @[reducible, inline]

    Helper monad for constructing maximally shared terms. The Bool flag indicates whether it is debug-mode or not.

    Instances For
      @[reducible, inline]

      Helper function for lifting a AlphaShareBuilderM action to GrindM

      Instances For
        def Lean.Meta.Sym.Internal.mkConstS {m : TypeType} [MonadShareCommon m] (declName : Name) (us : List Level := []) :
        Instances For
          Instances For
            Instances For
              Instances For
                Instances For
                  def Lean.Meta.Sym.Internal.mkProjS {m : TypeType} [MonadShareCommon m] [Monad m] (structName : Name) (idx : Nat) (struct : Expr) :
                  Instances For
                    Instances For
                      Instances For
                        Instances For
                          def Lean.Meta.Sym.Internal.mkLetS {m : TypeType} [MonadShareCommon m] [Monad m] (x : Name) (t v b : Expr) (nondep : Bool := false) :
                          Instances For
                            def Lean.Meta.Sym.Internal.mkHaveS {m : TypeType} [MonadShareCommon m] [Monad m] (x : Name) (t v b : Expr) :
                            Instances For
                              @[inline]
                              Instances For
                                @[inline]
                                Instances For
                                  @[inline]
                                  Instances For
                                    @[inline]
                                    def Lean.Expr.updateForallS! {m : TypeType} [Meta.Sym.Internal.MonadShareCommon m] [Monad m] (e newDomain newBody : Expr) :
                                    Instances For
                                      @[inline]
                                      def Lean.Expr.updateLambdaS! {m : TypeType} [Meta.Sym.Internal.MonadShareCommon m] [Monad m] (e newDomain newBody : Expr) :
                                      Instances For
                                        @[inline]
                                        def Lean.Expr.updateLetS! {m : TypeType} [Meta.Sym.Internal.MonadShareCommon m] [Monad m] (e newType newVal newBody : Expr) :
                                        Instances For
                                          def Lean.Meta.Sym.Internal.mkAppS₂ {m : TypeType} [MonadShareCommon m] [Monad m] (f a₁ a₂ : Expr) :
                                          Instances For
                                            def Lean.Meta.Sym.Internal.mkAppS₃ {m : TypeType} [MonadShareCommon m] [Monad m] (f a₁ a₂ a₃ : Expr) :
                                            Instances For
                                              def Lean.Meta.Sym.Internal.mkAppS₄ {m : TypeType} [MonadShareCommon m] [Monad m] (f a₁ a₂ a₃ a₄ : Expr) :
                                              Instances For
                                                def Lean.Meta.Sym.Internal.mkAppS₅ {m : TypeType} [MonadShareCommon m] [Monad m] (f a₁ a₂ a₃ a₄ a₅ : Expr) :
                                                Instances For