@@ -18,7 +18,7 @@ what action the user took which lead to this theorem existing in the simp set.
18
18
-/
19
19
inductive Origin where
20
20
/-- A global declaration in the environment. -/
21
- | decl (declName : Name)
21
+ | decl (declName : Name) (inv := false )
22
22
/--
23
23
A local hypothesis.
24
24
When `contextual := true` is enabled, this fvar may exist in an extension
@@ -42,7 +42,7 @@ inductive Origin where
42
42
43
43
/-- A unique identifier corresponding to the origin. -/
44
44
def Origin.key : Origin → Name
45
- | .decl declName => declName
45
+ | .decl declName _ => declName
46
46
| .fvar fvarId => fvarId.name
47
47
| .stx id _ => id
48
48
| .other name => name
@@ -136,7 +136,7 @@ instance : ToFormat SimpTheorem where
136
136
name ++ prio ++ perm
137
137
138
138
def ppOrigin [Monad m] [MonadEnv m] [MonadError m] : Origin → m MessageData
139
- | .decl n => mkConstWithLevelParams n
139
+ | .decl n inv => do let r ← mkConstWithLevelParams n; if inv then return m! "← {r}" else return r
140
140
| .fvar n => return mkFVar n
141
141
| .stx _ ref => return ref
142
142
| .other n => return n
@@ -318,7 +318,7 @@ private def mkSimpTheoremsFromConst (declName : Name) (post : Bool) (inv : Bool)
318
318
let mut r := #[]
319
319
for (val, type) in (← preprocess val type inv (isGlobal := true )) do
320
320
let auxName ← mkAuxLemma cinfo.levelParams type val
321
- r := r.push <| (← mkSimpTheoremCore (.decl declName) (mkConst auxName (cinfo.levelParams.map mkLevelParam)) #[] (mkConst auxName) post prio)
321
+ r := r.push <| (← mkSimpTheoremCore (.decl declName inv ) (mkConst auxName (cinfo.levelParams.map mkLevelParam)) #[] (mkConst auxName) post prio)
322
322
return r
323
323
else
324
324
return #[← mkSimpTheoremCore (.decl declName) (mkConst declName (cinfo.levelParams.map mkLevelParam)) #[] (mkConst declName) post prio]
@@ -403,7 +403,7 @@ def getSimpTheorems : CoreM SimpTheorems :=
403
403
404
404
/-- Auxiliary method for adding a global declaration to a `SimpTheorems` datastructure. -/
405
405
def SimpTheorems.addConst (s : SimpTheorems) (declName : Name) (post := true ) (inv := false ) (prio : Nat := eval_prio default) : MetaM SimpTheorems := do
406
- let s := { s with erased := s.erased.erase (.decl declName) }
406
+ let s := { s with erased := s.erased.erase (.decl declName inv ) }
407
407
let simpThms ← mkSimpTheoremsFromConst declName post inv prio
408
408
return simpThms.foldl addSimpTheoremEntry s
409
409
0 commit comments