File: .lake/packages/batteries/Batteries/Tactic/Lint/Misc.lean

full_name: Std.Tactic.Lint.dupNamespace
code: /-- A linter for checking whether a declaration has a namespace twice consecutively in its name. -/
@[env_linter] def dupNamespace : Linter 
goal: Std.Tactic.Lint.Linter

full_name: Std.Tactic.Lint.unusedArguments
code: /-- A linter for checking for unused arguments.
We skip all declarations that contain `sorry` in their value. -/
@[env_linter] def unusedArguments : Linter 
goal: Std.Tactic.Lint.Linter

full_name: Std.Tactic.Lint.docBlame
code: /-- A linter for checking definition doc strings. -/
@[env_linter] def docBlame : Linter 
goal: Std.Tactic.Lint.Linter

full_name: Std.Tactic.Lint.docBlameThm
code: /-- A linter for checking theorem doc strings. -/
@[env_linter disabled] def docBlameThm : Linter 
goal: Std.Tactic.Lint.Linter

full_name: Std.Tactic.Lint.defLemma
code: /-- A linter for checking whether the correct declaration constructor (definition or theorem)
has been used. -/
@[env_linter] def defLemma : Linter 
goal: Std.Tactic.Lint.Linter

full_name: Std.Tactic.Lint.checkType
code: /-- A linter for checking whether statements of declarations are well-typed. -/
@[env_linter] def checkType : Linter 
goal: Std.Tactic.Lint.Linter

full_name: _private.«.lake».packages.batteries.Batteries.Tactic.Lint.Misc.0.Std.Tactic.Lint.univParamsGrouped
code: /--
`univParamsGrouped e` computes for each `level` `u` of `e` the parameters that occur in `u`,
and returns the corresponding set of lists of parameters.
In pseudo-mathematical form, this returns `{{p : parameter | p ∈ u} | (u : level) ∈ e}`
FIXME: We use `Array Name` instead of `HashSet Name`, since `HashSet` does not have an equality
instance. It will ignore `nm₀.proof_i` declarations.
-/
private def univParamsGrouped (e : Expr) (nm₀ : Name) : Lean.HashSet (Array Name) 
goal: Lean.HashSet (Array Lean.Name)

full_name: _private.«.lake».packages.batteries.Batteries.Tactic.Lint.Misc.0.Std.Tactic.Lint.badParams
code: /--
The good parameters are the parameters that occur somewhere in the set as a singleton or
(recursively) with only other good parameters.
All other parameters in the set are bad.
-/
private partial def badParams (l : Array (Array Name)) : Array Name 
goal: Array Lean.Name

full_name: Std.Tactic.Lint.checkUnivs
code: /-- A linter for checking that there are no bad `max u v` universe levels.
Checks whether all universe levels `u` in the type of `d` are "good".
This means that `u` either occurs in a `level` of `d` by itself, or (recursively)
with only other good levels.
When this fails, usually this means that there is a level `max u v`, where neither `u` nor `v`
occur by themselves in a level. It is ok if *one* of `u` or `v` never occurs alone. For example,
`(α : Type u) (β : Type (max u v))` is a occasionally useful method of saying that `β` lives in
a higher universe level than `α`.
-/
@[env_linter] def checkUnivs : Linter 
goal: Std.Tactic.Lint.Linter

full_name: Std.Tactic.Lint.synTaut
code: /-- A linter for checking that declarations aren't syntactic tautologies.
Checks whether a lemma is a declaration of the form `∀ a b ... z, e₁ = e₂`
where `e₁` and `e₂` are identical exprs.
We call declarations of this form syntactic tautologies.
Such lemmas are (mostly) useless and sometimes introduced unintentionally when proving basic facts
with rfl when elaboration results in a different term than the user intended. -/
@[env_linter] def synTaut : Linter 
goal: Std.Tactic.Lint.Linter

full_name: Std.Tactic.Lint.findUnusedHaves
code: /--
Return a list of unused `let_fun` terms in an expression.
-/
def findUnusedHaves (e : Expr) : MetaM (Array MessageData) 
goal: Lean.MetaM (Array Lean.MessageData)

full_name: Std.Tactic.Lint.unusedHavesSuffices
code: /-- A linter for checking that declarations don't have unused term mode have statements. -/
@[env_linter] def unusedHavesSuffices : Linter 
goal: Std.Tactic.Lint.Linter

full_name: Std.Tactic.Lint.explicitVarsOfIff
code: /--
A linter for checking if variables appearing on both sides of an iff are explicit. Ideally, such
variables should be implicit instead.
-/
@[env_linter disabled] def explicitVarsOfIff : Linter 
goal: Std.Tactic.Lint.Linter