Builtin simproc declaration extension state.
It contains:
- The discrimination tree keys for each simproc (including symbolic evaluation procedures) name.
- The actual procedure associated with a name.
Instances For
This global reference is populated using the command builtin_simproc_pattern%
.
This reference is then used to process the attributes builtin_simproc
and builtin_sevalproc
.
Both attributes need the keys and the actual procedure registered using the command builtin_simproc_pattern%
.
- declName : Lean.Name
- keys : Array Lean.Meta.SimpTheoremKey
Instances For
Equations
- Lean.Meta.Simp.instInhabitedSimprocDecl = { default := { declName := default, keys := default } }
- builtin : Std.HashMap Lean.Name (Array Lean.Meta.SimpTheoremKey)
- newEntries : Lean.PHashMap Lean.Name (Array Lean.Meta.SimpTheoremKey)
Instances For
Equations
- Lean.Meta.Simp.instInhabitedSimprocDeclExtState = { default := { builtin := default, newEntries := default } }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.Simp.isSimproc declName = do let __do_lift ← Lean.Meta.Simp.getSimprocDeclKeys? declName pure __do_lift.isSome
Instances For
Given a declaration name declName
, store the discrimination tree keys and the actual procedure.
This method is invoked by the command builtin_simproc_pattern%
elaborator.
Instances For
Equations
- Lean.Meta.Simp.registerBuiltinSimproc declName key proc = Lean.Meta.Simp.registerBuiltinSimprocCore declName key (Sum.inl proc)
Instances For
Instances For
Instances For
Equations
- Lean.Meta.Simp.instBEqSimprocEntry = { beq := fun (e₁ e₂ : Lean.Meta.Simp.SimprocEntry) => e₁.declName == e₂.declName }
Instances For
Builtin symbolic evaluation procedures.
Instances For
Equations
- Lean.Meta.Simp.toSimprocEntry e = do let __do_lift ← Lean.Meta.Simp.getSimprocFromDecl e.declName pure { toSimprocOLeanEntry := e, proc := __do_lift }
Instances For
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Implements attributes builtin_simproc
and builtin_sevalproc
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.Simp.addSimprocBuiltinAttr declName post proc = Lean.Meta.Simp.addSimprocBuiltinAttrCore Lean.Meta.Simp.builtinSimprocsRef declName post proc
Instances For
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Similar to try
, but only consider DSimproc
case. That is, if s.proc
is a Simproc
, treat it as a .continue
.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ss.erase declName = Array.map (fun (s : Lean.Meta.Simprocs) => s.erase declName) ss
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.Simp.getSimprocs = do let __do_lift ← Lean.getEnv pure (Lean.ScopedEnvExtension.getState Lean.Meta.Simp.simprocExtension __do_lift)
Instances For
Instances For
Instances For
Try to retrieve the simproc set using the simp
or simproc
attribute names.
Recall that when we declare a simp
set using register_simp_attr
, an associated
simproc
set is automatically created. We use the function simpAttrNameToSimprocAttrName
to
find the simproc
associated with the simp
attribute.