Documentation

Mathlib.Tactic.FunProp.FunctionData

funProp data structure holding information about a function #

FunctionData holds data about function in the form fun x => f x₁ ... xₙ.

Structure storing parts of a function in funProp-normal form.

Instances For

    Turn function data back to expression.

    Equations
    Instances For

      Is f an identity function?

      Equations
      • f.isIdentityFun = (decide (f.args.size = 0) && f.fn == f.mainVar)
      Instances For

        Is f a constant function?

        Equations
        • f.isConstantFun = (decide (f.mainArgs.size = 0) && !f.fn.containsFVar f.mainVar.fvarId!)
        Instances For

          Domain type of f.

          Equations
          Instances For

            Is head function of f a constant?

            If the head of f is a projection return the name of corresponding projection function.

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

              Get FunctionData for f. Throws if f can't be put into funProp-normal form.

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

                Result of getFunctionData?. It returns function data if the function is in the form fun x => f y₁ ... yₙ. Two other cases are fun x => let y := ... or fun x y => ...

                Instances For

                  Get FunctionData for f.

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

                    If head function is a let-fvar unfold it and return resulting function. Return none otherwise.

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

                      Type of morphism application.

                      Instances For

                        Is function body of f a morphism application? What kind?

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

                          Decomposes fun x => f y₁ ... yₙ into (fun g => g yₙ) ∘ (fun x y => f y₁ ... yₙ₋₁ y)

                          Returns none if:

                          • n=0
                          • yₙ contains x
                          • n=1 and (fun x y => f y) is identity function i.e. x=f
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For

                            Decompose function f = (← fData.toExpr) into composition of two functions.

                            Returns none if the decomposition would produce composition with identity function.

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

                              Decompose function fun x => f y₁ ... yₙ over specified argument indices #[i, j, ...].

                              The result is:

                              (fun (yᵢ',yⱼ',...) => f y₁ .. yᵢ' .. yⱼ' .. yₙ) ∘ (fun x => (yᵢ, yⱼ, ...))
                              

                              This is not possible if yₗ for l ∉ #[i,j,...] still contains x. In such case none is returned.

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