The have vs let linter #
The have vs let linter flags uses of have to introduce a hypothesis whose Type is not Prop.
The option for this linter is a natural number, but really there are only 3 settings:
0-- inactive;1-- active only on noisy declarations;2or more -- always active.
TODO:
- Also lint
letvshave. haveImay need to change tolet/letI?replace,classical!,classical,tautointernally usehave: should the linter act on them as well?
The have vs let linter emits a warning on haves introducing a hypothesis whose
Type is not Prop.
There are three settings:
0-- inactive;1-- active only on noisy declarations;2or more -- always active.
The default value is 1.
find the have syntax.
Equations
- Mathlib.Linter.haveLet.isHave? (Lean.Syntax.node info `Lean.Parser.Tactic.tacticHave__ args) = true
- Mathlib.Linter.haveLet.isHave? x✝ = false
Instances For
a monadic version of Lean.Elab.InfoTree.foldInfo.
Used to infer types inside a CommandElabM.
Equations
- One or more equations did not get rendered due to their size.
Instances For
given a ContextInfo, a LocalContext and an Array of Expressions es with a Name,
toFormat_propTypes creates a MetaM context, and returns an array of
the pretty-printed Format of e, together with the (unchanged) name
for each Expression e in es whose type is a Prop.
Concretely, toFormat_propTypes runs inferType in CommandElabM.
This is the kind of monadic lift that nonPropHaves uses to decide whether the Type of a have
is in Prop or not.
The output Format is just so that the linter displays a better message.
Equations
- One or more equations did not get rendered due to their size.
Instances For
returns the have syntax whose corresponding hypothesis does not have Type Prop and
also a Formatted version of the corresponding Type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The main implementation of the have vs let linter.
Equations
- One or more equations did not get rendered due to their size.