Skip to content

Commit 7874fc5

Browse files
committed
chore(Order/Defs): golf multiple lemmas in LinearOrder using grind (#30897)
1 parent f61ebd3 commit 7874fc5

File tree

1 file changed

+19
-60
lines changed

1 file changed

+19
-60
lines changed

Mathlib/Order/Defs/LinearOrder.lean

Lines changed: 19 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ lemma lt_of_not_ge (h : ¬b ≤ a) : a < b := lt_of_le_not_ge (le_of_not_ge h) h
8787

8888
@[deprecated (since := "2025-05-11")] alias le_of_not_le := le_of_not_ge
8989

90-
lemma lt_trichotomy (a b : α) : a < b ∨ a = b ∨ b < a := by
91-
grind [le_total, Decidable.lt_or_eq_of_le]
90+
lemma lt_trichotomy (a b : α) : a < b ∨ a = b ∨ b < a := by grind
9291

9392
lemma le_of_not_gt (h : ¬b < a) : a ≤ b :=
9493
match lt_trichotomy a b with
@@ -107,7 +106,7 @@ lemma le_or_gt (a b : α) : a ≤ b ∨ b < a := (lt_or_ge b a).symm
107106

108107
@[deprecated (since := "2025-05-11")] alias le_or_lt := le_or_gt
109108

110-
lemma lt_or_gt_of_ne (h : a ≠ b) : a < b ∨ b < a := by simpa [h] using lt_trichotomy a b
109+
lemma lt_or_gt_of_ne (h : a ≠ b) : a < b ∨ b < a := by grind
111110

112111
lemma ne_iff_lt_or_gt : a ≠ b ↔ a < b ∨ b < a := ⟨lt_or_gt_of_ne, (Or.elim · ne_of_lt ne_of_gt)⟩
113112

@@ -131,55 +130,31 @@ lemma min_def (a b : α) : min a b = if a ≤ b then a else b := LinearOrder.min
131130
@[grind =]
132131
lemma max_def (a b : α) : max a b = if a ≤ b then b else a := LinearOrder.max_def a b
133132

134-
lemma min_le_left (a b : α) : min a b ≤ a := by
135-
if h : a ≤ b
136-
then simp [min_def, if_pos h, le_refl]
137-
else simpa [min_def, if_neg h] using le_of_not_ge h
133+
lemma min_le_left (a b : α) : min a b ≤ a := by grind
138134

139-
lemma min_le_right (a b : α) : min a b ≤ b := by
140-
if h : a ≤ b
141-
then simpa [min_def, if_pos h] using h
142-
else simp [min_def, if_neg h, le_refl]
135+
lemma min_le_right (a b : α) : min a b ≤ b := by grind
143136

144-
lemma le_min (h₁ : c ≤ a) (h₂ : c ≤ b) : c ≤ min a b := by
145-
grind
137+
lemma le_min (h₁ : c ≤ a) (h₂ : c ≤ b) : c ≤ min a b := by grind
146138

147-
lemma le_max_left (a b : α) : a ≤ max a b := by
148-
if h : a ≤ b
149-
then simpa [max_def, if_pos h] using h
150-
else simp [max_def, if_neg h, le_refl]
139+
lemma le_max_left (a b : α) : a ≤ max a b := by grind
151140

152-
lemma le_max_right (a b : α) : b ≤ max a b := by
153-
if h : a ≤ b
154-
then simp [max_def, if_pos h, le_refl]
155-
else simpa [max_def, if_neg h] using le_of_not_ge h
141+
lemma le_max_right (a b : α) : b ≤ max a b := by grind
156142

157-
lemma max_le (h₁ : a ≤ c) (h₂ : b ≤ c) : max a b ≤ c := by
158-
grind
143+
lemma max_le (h₁ : a ≤ c) (h₂ : b ≤ c) : max a b ≤ c := by grind
159144

160145
lemma eq_min (h₁ : c ≤ a) (h₂ : c ≤ b) (h₃ : ∀ {d}, d ≤ a → d ≤ b → d ≤ c) : c = min a b :=
161146
le_antisymm (le_min h₁ h₂) (h₃ (min_le_left a b) (min_le_right a b))
162147

163148
lemma min_comm (a b : α) : min a b = min b a :=
164149
eq_min (min_le_right a b) (min_le_left a b) fun h₁ h₂ => le_min h₂ h₁
165150

166-
lemma min_assoc (a b c : α) : min (min a b) c = min a (min b c) := by
167-
apply eq_min
168-
· apply le_trans (min_le_left ..) (min_le_left ..)
169-
· apply le_min
170-
· apply le_trans (min_le_left ..) (min_le_right ..)
171-
· apply min_le_right
172-
· intro d h₁ h₂; apply le_min
173-
· apply le_min h₁; apply le_trans h₂; apply min_le_left
174-
· apply le_trans h₂; apply min_le_right
151+
lemma min_assoc (a b c : α) : min (min a b) c = min a (min b c) := by grind
175152

176-
lemma min_left_comm (a b c : α) : min a (min b c) = min b (min a c) := by
177-
rw [← min_assoc, min_comm a, min_assoc]
153+
lemma min_left_comm (a b c : α) : min a (min b c) = min b (min a c) := by grind
178154

179-
@[simp] lemma min_self (a : α) : min a a = a := by simp [min_def]
155+
@[simp] lemma min_self (a : α) : min a a = a := by grind
180156

181-
lemma min_eq_left (h : a ≤ b) : min a b = a := by
182-
grind
157+
lemma min_eq_left (h : a ≤ b) : min a b = a := by grind
183158

184159
lemma min_eq_right (h : b ≤ a) : min a b = b := min_comm b a ▸ min_eq_left h
185160

@@ -190,23 +165,13 @@ lemma eq_max (h₁ : a ≤ c) (h₂ : b ≤ c) (h₃ : ∀ {d}, a ≤ d → b
190165
lemma max_comm (a b : α) : max a b = max b a :=
191166
eq_max (le_max_right a b) (le_max_left a b) fun h₁ h₂ => max_le h₂ h₁
192167

193-
lemma max_assoc (a b c : α) : max (max a b) c = max a (max b c) := by
194-
apply eq_max
195-
· apply le_trans (le_max_left a b) (le_max_left ..)
196-
· apply max_le
197-
· apply le_trans (le_max_right a b) (le_max_left ..)
198-
· apply le_max_right
199-
· intro d h₁ h₂; apply max_le
200-
· apply max_le h₁; apply le_trans (le_max_left _ _) h₂
201-
· apply le_trans (le_max_right _ _) h₂
168+
lemma max_assoc (a b c : α) : max (max a b) c = max a (max b c) := by grind
202169

203-
lemma max_left_comm (a b c : α) : max a (max b c) = max b (max a c) := by
204-
rw [← max_assoc, max_comm a, max_assoc]
170+
lemma max_left_comm (a b c : α) : max a (max b c) = max b (max a c) := by grind
205171

206-
@[simp] lemma max_self (a : α) : max a a = a := by simp [max_def]
172+
@[simp] lemma max_self (a : α) : max a a = a := by grind
207173

208-
lemma max_eq_left (h : b ≤ a) : max a b = a := by
209-
apply Eq.symm; apply eq_max (le_refl _) h; intros; assumption
174+
lemma max_eq_left (h : b ≤ a) : max a b = a := by grind
210175

211176
lemma max_eq_right (h : a ≤ b) : max a b = b := max_comm b a ▸ max_eq_left h
212177

@@ -225,21 +190,15 @@ section Ord
225190

226191
lemma compare_lt_iff_lt : compare a b = .lt ↔ a < b := by
227192
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
228-
split_ifs <;> simp only [*, lt_irrefl]
193+
grind
229194

230195
lemma compare_gt_iff_gt : compare a b = .gt ↔ b < a := by
231196
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
232-
split_ifs <;> simp only [*, lt_irrefl, not_lt_of_gt]
233-
case _ h₁ h₂ =>
234-
have h : b < a := lt_trichotomy a b |>.resolve_left h₁ |>.resolve_left h₂
235-
rwa [true_iff]
197+
grind
236198

237199
lemma compare_eq_iff_eq : compare a b = .eq ↔ a = b := by
238200
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
239-
split_ifs <;> try simp only
240-
case _ h => rw [false_iff]; exact ne_iff_lt_or_gt.2 <| .inl h
241-
case _ _ h => rwa [true_iff]
242-
case _ _ h => rwa [false_iff]
201+
grind
243202

244203
lemma compare_le_iff_le : compare a b ≠ .gt ↔ a ≤ b := by
245204
cases h : compare a b

0 commit comments

Comments
 (0)