Documentation

Mathlib.Tactic.FunProp.Mor

funProp meta programming function like in Lean.Expr.* but for working with bundled morphisms #

Function application in normal lean expression looks like .app f x but when we work with bundled morphism f it looks like .app (.app coe f) x where f. In mathlib the convention is that coe is application of DFunLike.coe and this is assumed through out this file. It does not work with Lean's CoeFun.coe.

The main difference when working with expression involving morphisms is that the notion the head of expression changes. For example in:

  coe (f a) b = ⇑(f a) b

the head of expression is considered to be f and not coe.

Argument of morphism application that stores corresponding coercion if necessary

Instances For

    Morphism application

    Equations
    Instances For

      Counts the number n of arguments for an expression f a₁ .. aₙ where f can be bundled morphism.

      Equations
      Instances For

        Given e = f a₁ a₂ ... aₙ, returns k f #[a₁, ..., aₙ] where f can be bundled morphism.

        Equations
        Instances For

          If the given expression is a sequence of morphism applications f a₁ .. aₙ, return f. Otherwise return the input expression.

          Equations
          Instances For

            Given f a₁ a₂ ... aₙ, returns #[a₁, ..., aₙ] where f can be bundled morphism.

            Equations
            Instances For

              mkAppN f #[a₀, ..., aₙ] ==> f a₀ a₁ .. aₙ where f can be bundled morphism.

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

                Get arity of morphism f. To get maximal arity of morphism f, this function tries to synthesize instance of FunLike as many times as possible.

                Equations
                Instances For

                  Arity of declared morphism with name decl.

                  Equations
                  Instances For

                    (fun x => e) a ==> e[x/a]

                    An example when coercions are involved: (fun x => ⇑((fun y => e) a)) b ==> e[y/a, x/b].

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

                      Split morphism function into composition by specifying over which arguments in the lambda body this split should be done.

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

                        Split morphism function into composition by specifying over which arguments in the lambda body this split should be done.

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