feat: OfSemiring.toQ unexpander (#9076)
This PR adds an unexpander for `OfSemiring.toQ`. This an auxiliary
function used by the `ring` module in `grind`, but we want to reduce the
clutter in the diagnostic information produced by `grind`. Example:
```
example [CommSemiring α] [AddRightCancel α] [IsCharP α 0] (x y : α)
: x^2*y = 1 → x*y^2 = y → x + y = 2 → False := by
grind
```
produces
```
[ring] Ring `Ring.OfSemiring.Q α` ▼
[basis] Basis ▼
[_] ↑x + ↑y + -2 = 0
[_] ↑y + -1 = 0
```
This commit is contained in:
parent
98e868e3d2
commit
8b1d2fc2d5
2 changed files with 22 additions and 1 deletions
|
|
@ -503,6 +503,16 @@ def ofCommSemiring : CommRing (OfSemiring.Q α) :=
|
|||
|
||||
attribute [instance] ofCommSemiring
|
||||
|
||||
end OfCommSemiring
|
||||
/-
|
||||
Remark: `↑a` is notation for `OfSemring.toQ a`.
|
||||
We want to hide `OfSemring.toQ` applications in the diagnostic information produced by
|
||||
the `ring` procedure in `grind`.
|
||||
-/
|
||||
@[app_unexpander OfSemiring.toQ]
|
||||
meta def toQUnexpander : PrettyPrinter.Unexpander := fun stx => do
|
||||
match stx with
|
||||
| `($_ $a:term) => `(↑$a)
|
||||
| _ => throw ()
|
||||
|
||||
end OfCommSemiring
|
||||
end Lean.Grind.CommRing
|
||||
|
|
|
|||
|
|
@ -28,3 +28,14 @@ example [CommSemiring α] [AddRightCancel α] (x y : α) : x^2*y = 1 → x*y^2 =
|
|||
|
||||
example [CommSemiring α] [AddRightCancel α] [IsCharP α 0] (x y : α) : x^2*y = 1 → x*y^2 = y → x + y = 1 → False := by
|
||||
grind
|
||||
|
||||
/--
|
||||
trace: [grind.ring.assert.basis] ↑x + ↑y + -2 = 0
|
||||
[grind.ring.assert.basis] ↑y ^ 3 + -4 * ↑y ^ 2 + 4 * ↑y + -1 = 0
|
||||
[grind.ring.assert.basis] 2 * ↑y ^ 2 + -3 * ↑y + 1 = 0
|
||||
[grind.ring.assert.basis] ↑y + -1 = 0
|
||||
-/
|
||||
#guard_msgs (drop error, trace) in
|
||||
set_option trace.grind.ring.assert.basis true in
|
||||
example [CommSemiring α] [AddRightCancel α] [IsCharP α 0] (x y : α) : x^2*y = 1 → x*y^2 = y → x + y = 2 → False := by
|
||||
grind
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue