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 to- let/letI?
- replace,- classical!,- classical,- tautointernally use- have: 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.