@@ -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
9392lemma 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
112111lemma 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 =]
132131lemma 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
160145lemma 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
163148lemma 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
184159lemma 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
190165lemma 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
211176lemma 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
226191lemma 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
230195lemma 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
237199lemma 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
244203lemma compare_le_iff_le : compare a b ≠ .gt ↔ a ≤ b := by
245204 cases h : compare a b
0 commit comments