Documentation

Lean.Meta.Tactic.Simp.Simproc

Builtin simproc declaration extension state.

It contains:

  • The discrimination tree keys for each simproc (including symbolic evaluation procedures) name.
  • The actual procedure associated with a name.
Instances For

    This global reference is populated using the command builtin_simproc_pattern%.

    This reference is then used to process the attributes builtin_simproc and builtin_sevalproc. Both attributes need the keys and the actual procedure registered using the command builtin_simproc_pattern%.

    Instances For
      Equations
        Instances For
          Equations
            Instances For
              Equations
                Instances For

                  Given a declaration name declName, store the discrimination tree keys and the actual procedure.

                  This method is invoked by the command builtin_simproc_pattern% elaborator.

                  Equations
                    Instances For
                      Equations
                        Instances For
                          Equations
                            Instances For
                              Equations
                                Instances For
                                  Equations
                                    Instances For

                                      Builtin symbolic evaluation procedures.

                                      @[reducible, inline]
                                      Equations
                                        Instances For
                                          Equations
                                            Instances For
                                              @[implemented_by Lean.Meta.Simp.getSimprocFromDeclImpl]
                                              Equations
                                                Instances For
                                                  Equations
                                                    Instances For
                                                      Equations
                                                        Instances For

                                                          Implements attributes builtin_simproc and builtin_sevalproc.

                                                          Equations
                                                            Instances For
                                                              Equations
                                                                Instances For
                                                                  Equations
                                                                    Instances For
                                                                      def Lean.Meta.Simp.Simprocs.add (s : Simprocs) (declName : Name) (post : Bool) :
                                                                      Equations
                                                                        Instances For
                                                                          Equations
                                                                            Instances For

                                                                              Similar to try, but only consider DSimproc case. That is, if s.proc is a Simproc, treat it as a .continue.

                                                                              Equations
                                                                                Instances For
                                                                                  def Lean.Meta.Simp.simprocCore (post : Bool) (s : SimprocTree) (erased : PHashSet Name) (e : Expr) :
                                                                                  Equations
                                                                                    Instances For
                                                                                      Equations
                                                                                        Instances For
                                                                                          @[reducible, inline]
                                                                                          Equations
                                                                                            Instances For
                                                                                              Equations
                                                                                                Instances For
                                                                                                  Equations
                                                                                                    Instances For
                                                                                                      Equations
                                                                                                        Instances For
                                                                                                          Equations
                                                                                                            Instances For
                                                                                                              Equations
                                                                                                                Instances For
                                                                                                                  def Lean.Meta.Simp.mkSimprocExt (name : Name := by exact decl_name%) (ref? : Option (IO.Ref Simprocs)) :
                                                                                                                  Equations
                                                                                                                    Instances For
                                                                                                                      def Lean.Meta.Simp.addSimprocAttr (ext : SimprocExtension) (declName : Name) (stx : Syntax) (attrKind : AttributeKind) :
                                                                                                                      Equations
                                                                                                                        Instances For
                                                                                                                          def Lean.Meta.Simp.mkSimprocAttr (attrName : Name) (attrDescr : String) (ext : SimprocExtension) (name : Name) :
                                                                                                                          Equations
                                                                                                                            Instances For
                                                                                                                              @[reducible, inline]
                                                                                                                              Equations
                                                                                                                                Instances For
                                                                                                                                  def Lean.Meta.Simp.registerSimprocAttr (attrName : Name) (attrDescr : String) (ref? : Option (IO.Ref Simprocs)) (name : Name := by exact decl_name%) :
                                                                                                                                  Equations
                                                                                                                                    Instances For
                                                                                                                                      Equations
                                                                                                                                        Instances For
                                                                                                                                          def Lean.Meta.Simp.getSimprocExtension? (simprocAttrNameOrsimpAttrName : Name) :

                                                                                                                                          Try to retrieve the simproc set using the simp or simproc attribute names. Recall that when we declare a simp set using register_simp_attr, an associated simproc set is automatically created. We use the function simpAttrNameToSimprocAttrName to find the simproc associated with the simp attribute.

                                                                                                                                          Equations
                                                                                                                                            Instances For