Linter for simplification lemmas #
This files defines several linters that prevent common mistakes when declaring simp lemmas:
simpNF
checks that the left-hand side of a simp lemma is not simplified by a different lemma.simpVarHead
checks that the head symbol of the left-hand side is not a variable.simpComm
checks that commutativity lemmas are not marked as simplification lemmas.
Given the list of hypotheses, is this a conditional rewrite rule?
Equations
- One or more equations did not get rendered due to their size.
- Std.Tactic.Lint.isConditionalHyps lhs [] = pure false
Instances For
Runs the continuation on all the simp theorems encoded in the given type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Checks whether two expressions are equal for the simplifier. That is, they are reducibly-definitional equal, and they have the same head symbol.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructs a message from all the simp theorems encoded in the given type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Returns true if this is a @[simp]
declaration.
Equations
- Std.Tactic.Lint.isSimpTheorem declName = do let __do_lift ← liftM Lean.Meta.getSimpTheorems pure (Lean.PersistentHashSet.contains __do_lift.lemmaNames (Lean.Meta.Origin.decl declName))
Instances For
Returns the list of elements in the discrimination tree.
Equations
- d.elements = d.root.foldl (fun (arr : Array α) (x : Lean.Meta.DiscrTree.Key) => Lean.Meta.DiscrTree.elements.trieElements arr) #[]
Instances For
Returns the list of elements in the trie.
Add message msg
to any errors thrown inside k
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Render the list of simp lemmas.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A linter for simp lemmas whose lhs is not in simp-normal form, and which hence never fire.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A linter for simp lemmas whose lhs has a variable as head symbol, and which hence never fire.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A linter for commutativity lemmas that are marked simp.
Equations
- One or more equations did not get rendered due to their size.