Skip to content

Commit 0b17392

Browse files
authored
feat: LawfulOfScientific in grind (#11331)
This PR adds support for the `LawfulOfScientific` class in `grind`. Examples: ```lean open Lean Grind Std variable [LE α] [LT α] [LawfulOrderLT α] [Field α] [OfScientific α] [LawfulOfScientific α] [IsLinearOrder α] [OrderedRing α] example : (2 / 3 : α) ≤ (0.67 : α) := by grind example : (1.2 : α) ≤ (1.21 : α) := by grind example : (2 / 3 : α) ≤ (67 / 100 : α) := by grind example : (1.2345 : α) ≤ (1.2346 : α) := by grind example : (2.3 : α) ≤ (4.5 : α) := by grind example : (2.3 : α) ≤ (5/2 : α) := by grind ```
1 parent bd711e3 commit 0b17392

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

src/Init/Grind/Norm.lean

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ prelude
88
public import Init.Data.Int.Linear
99
public import Init.Grind.Ring.Field
1010
public import Init.Data.Rat.Lemmas
11+
public import Init.Grind.Ring.OfScientific
1112
public section
1213

1314
namespace Lean.Grind
@@ -207,7 +208,9 @@ init_grind_norm
207208
Ring.intCast_mul
208209
Ring.intCast_pow
209210
Ring.intCast_sub
211+
-- OfScientific
212+
LawfulOfScientific.ofScientific_def
210213
-- Rationals
211-
Rat.ofScientific_def_eq_if Rat.zpow_neg
214+
Rat.zpow_neg
212215

213216
end Lean.Grind

tests/lean/run/grind_10489.lean

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,12 @@ example : (1.2345 : Rat) ≤ (1.2346 : Rat) := by grind
88
example : (1.2345 : Rat) ≤ (1.234501 : Rat) := by grind
99
example : (2.3 : Rat) ≤ (4.5 : Rat) := by grind
1010
example : (2.3 : Rat) ≤ (5/2 : Rat) := by grind
11+
12+
open Lean Grind Std
13+
variable [LE α] [LT α] [LawfulOrderLT α] [Field α] [OfScientific α] [LawfulOfScientific α] [IsLinearOrder α] [OrderedRing α]
14+
example : (2 / 3 : α) ≤ (0.67 : α) := by grind
15+
example : (1.2 : α) ≤ (1.21 : α) := by grind
16+
example : (2 / 3 : α) ≤ (67 / 100 : α) := by grind
17+
example : (1.2345 : α) ≤ (1.2346 : α) := by grind
18+
example : (2.3 : α) ≤ (4.5 : α) := by grind
19+
example : (2.3 : α) ≤ (5/2 : α) := by grind

tests/lean/run/grind_fin.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,3 +600,7 @@ theorem pred_one {n : Nat} :
600600
theorem val_eq_zero_iff [NeZero n] {a : Fin n} : a.val = 0 ↔ a = 0 := by grind
601601

602602
theorem val_ne_zero_iff [NeZero n] {a : Fin n} : a.val ≠ 0 ↔ a ≠ 0 := by grind
603+
604+
example (n : Nat) (j k : Fin n) (hk : ↑k + 1 < n) (h : j ≠ ⟨↑k + 1, hk⟩) :
605+
(if (j : Nat) = ↑k + 1 then 1 else 0) = 0 := by
606+
grind

0 commit comments

Comments
 (0)