The @[coe]
attribute, used to delaborate coercion functions as ↑
#
When writing a coercion, if the pattern
@[coe]
def A.toB (a : A) : B := sorry
instance : Coe A B where coe := A.toB
is used, then A.toB a
will be pretty-printed as ↑a
.
The different types of coercions that are supported by the coe
attribute.
- coe: Lean.Meta.CoeFnType
The basic coercion
↑x
, seeCoeT.coe
- coeFun: Lean.Meta.CoeFnType
The coercion to a function type, see
CoeFun.coe
- coeSort: Lean.Meta.CoeFnType
The coercion to a type, see
CoeSort.coe
Instances For
Equations
- Lean.Meta.instInhabitedCoeFnType = { default := Lean.Meta.CoeFnType.coe }
Equations
- Lean.Meta.instReprCoeFnType = { reprPrec := Lean.Meta.reprCoeFnType✝ }
Equations
- Lean.Meta.instDecidableEqCoeFnType x y = if h : x.toCtorIdx = y.toCtorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Information associated to a coercion function to enable sensible delaboration.
- numArgs : Nat
The number of arguments to the coercion function
- coercee : Nat
The argument index that represents the value being coerced
- type : Lean.Meta.CoeFnType
The type of coercion
Instances For
Equations
- Lean.Meta.instInhabitedCoeFnInfo = { default := { numArgs := default, coercee := default, type := default } }
Equations
- Lean.Meta.instReprCoeFnInfo = { reprPrec := Lean.Meta.reprCoeFnInfo✝ }
Equations
- One or more equations did not get rendered due to their size.
The environment extension for tracking coercion functions for delaboration
Lookup the coercion information for a given function
Equations
- Lean.Meta.getCoeFnInfo? fn = do let __do_lift ← Lean.getEnv pure ((Lean.ScopedEnvExtension.getState Lean.Meta.coeExt __do_lift).find? fn)
Instances For
def
Lean.Meta.registerCoercion
(name : Lean.Name)
(info : optParam (Option Lean.Meta.CoeFnInfo) none)
:
Add name
to the coercion extension and add a coercion delaborator for the function.
Equations
- One or more equations did not get rendered due to their size.