The @[cfc_pull] attribute #
The cfc_pull attribute marks lemmas for use by the cfc_pull tactic and categorizes them
according to their shape, and records other information used by the tactic.
What a tagged lemma is for.
- pull : Kind
⟨algebraic expression⟩ = cfc f a, usable as a plainsimplemma. - target : Kind
Like
pull, but the ring, the element or a type is not determined by the algebraic side, e.g.a = cfc (fun x : R ↦ x) a, sosimpcannot use the lemma as it is.cfc_pullspecializes these at the ring asked for and, if need be (Entry.elemFree), at its targets. - compose : Kind
- conv : Kind
Instances For
Equations
Equations
- Mathlib.Tactic.CFCPull.instBEqKind.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
A tagged lemma, in one of the orientations cfc_pull may use it in.
- origin : Lean.Meta.Origin
The lemma: a declaration, or, from the
[..]list ofcfc_pull, a local hypothesis (*) or a term. The proof and its universe parameters, as
simpelaborated them, when the lemma is a term from the[..]list ofcfc_pull.- inv : Bool
Whether
simpuses it right to left. - kind : Kind
- prio : ℕ
The attribute priority.
The head constant of the scalar ring of the right-hand side, if it is concrete.
- unital : Bool
For
convlemmas: the ring of the left-hand side.- srcUnital : Bool
For
convlemmas: the unitality of the left-hand side. - holes : Bool
- freeType : Bool
For
targetlemmas: whether some type appears in neither side of the equation, like theSofStarAlgHomClass.map_cfc.cfc_pullhas to guess it, and tries the scalar rings it knows. - elemFree : Bool
For
targetlemmas: whether the element has to be supplied, because the algebraic side is the bare element (a = cfc (fun x ↦ x) a, which would match anything) or does not mention it (1 = cfc (fun _ ↦ 1) a). Otherwisesimpfinds the element by unification, andcfc_pullaccepts the rewrite if it is a target. For
pullandtargetlemmas: the head constant of the element the calculus is applied to, if it is structured:DFunLike.coefor theφ aofφ (cfc f a) = cfc f (φ a).- thms : Array Lean.Meta.SimpTheorem
The lemma as
simpuses it, in its orientation and at its priority, ifsimpcan use it on its own, finding the ring and the element by unification: that is, unless it is atargetlemma, whichcfc_pullspecializes when it is called.
Instances For
Equations
Equations
- Mathlib.Tactic.CFCPull.instBEqSetKind.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
The lemmas of one simp set have the same use, ring and unitality. cfc_pull orders the sets
for one use when it knows which ring and unitality are asked for: fewer scalar conversions first,
then the requested unitality. Inside a set the priority decides, as always.
- set : SetKind
The use.
The head constant of the scalar ring, if it is concrete.
- unital : Bool
For
convlemmas: the ring converted from.- srcUnital : Bool
For
convlemmas: the unitality converted from.
Instances For
Equations
Equations
Equations
- One or more equations did not get rendered due to their size.
- Mathlib.Tactic.CFCPull.instBEqKey.beq x✝¹ x✝ = false
Instances For
The simp set a lemma goes to when it is tagged, if it is not one cfc_pull specializes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The @[cfc_pull] lemmas, and the simp sets of those simp can use on its own.
The lemmas.
- sets : Array (Key × Lean.Meta.SimpTheorems)
The simp sets.
Instances For
Equations
Add lemmas to a simp set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Add a lemma, to its simp set too if it has one.
Equations
Instances For
Remove the lemmas of a declaration.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The environment extension holding the @[cfc_pull] lemmas.
The lemma as a term, with fresh universe metavariables.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Classify a lemma of type type: the entries recording how cfc_pull may use it, or none
if it is not an equation with cfc or cfcₙ at the head of a side.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Classify a lemma of type type, which must be one cfc_pull can use.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cfc_pull attribute marks lemmas for use by the cfc_pull tactic. Such a lemma is
an equation with cfc or cfcₙ at the head of at least one side. The attribute sorts lemmas
into the following categories and records other information used by the tactic, including
the scalar ring, unitality, and whether the algebraic side contains applications of cfc (holes).
| category | shape | example |
|---|---|---|
pull | cfc f a = ⟨an expression in the algebra⟩ | cfc_mul |
target | a pull lemma whose algebraic side does not fix R | cfc_id' |
conv | cfc (f : R → R) a = cfc (g : S → S) a, cfcₙ f a = cfc f a | cfcₙ_eq_cfc |
compose | cfc (f ∘ g) a = cfc f ⟨an expression in a⟩ | cfc_comp_pow |
Equations
- One or more equations did not get rendered due to their size.