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.

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.

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.

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 => ...

Get FunctionData for f.

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

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.

Type of morphism application.

  • underApplied : MorApplication

    Of the form ⇑f i.e. missing argument.

  • exact : MorApplication

    Of the form ⇑f x i.e. morphism and one argument is provided.

  • overApplied : MorApplication

    Of the form ⇑f x y ... i.e. additional applied arguments y ....

  • none : MorApplication

    Not a morphism application.

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

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

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.

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.

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.