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.
- lctx : Lean.LocalContext
local context where
mainVarexists - insts : Lean.LocalInstances
local instances
- fn : Lean.Expr
main function
applied function arguments
- mainVar : Lean.Expr
main variable
indices of
argsthat containmainVars
Instances For
Turn function data back to expression.
Equations
- f.toExpr = Lean.Meta.withLCtx f.lctx f.insts (have body := Mathlib.Meta.FunProp.Mor.mkAppN f.fn f.args; Lean.Meta.mkLambdaFVars #[f.mainVar] body)
Instances For
Is f an identity function?
Instances For
Is f a constant function?
Instances For
Domain type of f.
Equations
- f.domainType = Lean.Meta.withLCtx f.lctx f.insts (Lean.Meta.inferType f.mainVar)
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 => ...
- letE
(f : Lean.Expr)
: MaybeFunctionData
Can't generate function data as function body has let binder.
- lam
(f : Lean.Expr)
: MaybeFunctionData
Can't generate function data as function body has lambda binder.
- data
(fData : FunctionData)
: MaybeFunctionData
Function data has been successfully generated.
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.
- underApplied : MorApplication
Of the form
⇑fi.e. missing argument. - exact : MorApplication
Of the form
⇑f xi.e. morphism and one argument is provided. - overApplied : MorApplication
Of the form
⇑f x y ...i.e. additional applied argumentsy .... - none : MorApplication
Not a morphism application.
Instances For
Equations
- Mathlib.Meta.FunProp.instBEqMorApplication.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
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=0yₙcontainsxn=1and(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.