Documentation

FormalConjectures.Util.Attributes

Problem Formalisation Attributes #

The Category Attribute: #

Overview #

Provides information of the type of a statement. This can be:

Values #

The values of this attribute are

Usage examples #

The tag should be used as follows:

@[category high_school]
theorem imo_2024_p6
    (IsAquaesulian : (ℚ → ℚ) → Prop)
    (IsAquaesulian_def : ∀ f, IsAquaesulian f ↔
      ∀ x y, f (x + f y) = f x + y ∨ f (f x + y) = x + f y) :
    IsLeast {(c : ℤ) | ∀ f, IsAquaesulian f → {(f r + f (-r)) | (r : ℚ)}.Finite ∧
      {(f r + f (-r)) | (r : ℚ)}.ncard ≤ c} 2 := by
  sorry

@[category research open]
theorem an_open_problem : Transcendental ℝ (π + rexp 1) := by
  sorry

@[category test]
theorem a_test_to_sanity_check_some_definition : ¬ FermatLastTheoremWith 1 := by
  sorry

The Problem Subject Attribute #

Provides information about the subject of a mathematical problem, via a numeral corresponding to the AMS subject classification of the problem. This can be used as follows:

@[AMS 11] -- 11 correponds to Number Theory in the AMS classification
theorem FLT : FermatLastTheorem := by
  sorry

The complete list of subjects can be found here: https://mathscinet.ams.org/mathscinet/msc/pdfs/classifications2020.pdf

In order to access the list from within a Lean file, use the #AMS command.

Note: the current implementation of the attribute includes all the main categories in the AMS classification for completeness. Some are not relevant to this repository.

  • open : ProblemStatus

    Indicates that a mathematical problem is still open.

  • solved : ProblemStatus

    Indicates that a mathematical problem is already solved, i.e., there is a published (informal) proof that is widely accepted by experts.

Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      def ProblemAttributes.problemStatus.toName (stx : Lean.TSyntax `ProblemAttributes.problemStatus) :

      Convert from a syntax node to a name.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        A type to capture the various types of statements that appear in our Lean files.

        • highSchool : Category

          A high school level math problem.

        • undergraduate : Category

          An undegraduate level math problem.

        • graduate : Category

          A graduate level math problem.

        • research : ProblemStatusCategory

          A reseach level math problem. This can be open, or already solved

        • test : Category

          A test statement that serves as a sanity check (e.g. for a new definition)

        • API : Category

          An "API" statement, i.e. a statement that constructs basic theory around a new definition

        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            • declName : Lean.Name

              The name of the declaration with the given tag.

            • category : Category

              The status of the problem.

            • informal : String

              The (optional) comment that comes with the given declaration.

            Instances For

              Defines the categoryExt extension for adding a HashSet of Tags to the environment.

              def ProblemAttributes.addCategoryEntry {m : TypeType} [Lean.MonadEnv m] (declName : Lean.Name) (cat : Category) (comment : String) :
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                • declName : Lean.Name

                  The name of the declaration with the given tag.

                • subjects : List AMS

                  The subject(s) of the problem.

                • informal : String

                  The (optional) comment that comes with the given declaration.

                Instances For

                  Defines the tagExt extension for adding a HashSet of Tags to the environment.

                  def ProblemAttributes.addSubjectEntry {m : TypeType} [Lean.MonadEnv m] (name : Lean.Name) (subjects : List AMS) (informal : String) :
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    def ProblemAttributes.Syntax.toCategory (stx : Lean.TSyntax `ProblemAttributes.CategorySyntax) :

                    Convert from a syntax node to a term of type Category and annotate the syntax with the corresponding name's docstring.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def ProblemAttributes.Syntax.toSubjects (stx : Lean.TSyntax `ProblemAttributes.subjectList) :

                        Converts a syntax node to an array of AMS subjects.

                        This also annotates the every natural number litteral encountered, with the description of the corresponding AMS subject (i.e. hovering over the number in VS Code will show the subject.)

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            def ProblemAttributes.splitByFun {α β : Type} (f : αβ) [BEq β] [Hashable β] (arr : Array α) :

                            Split an array into preimages of a function.

                            splitByFun f arr is the hashmap such that the value for key b : β is the array of a : α in arr that get mapped to b by f

                            Equations
                            Instances For
                              def ProblemAttributes.splitByFun.addPreimage {α β : Type} (f : αβ) [BEq β] [Hashable β] (a : α) (m : Std.HashMap β (Array α)) :
                              Equations
                              Instances For
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For