Skip to content

Commit 56c98a5

Browse files
committed
chore: remove unused Decidable* instances in theorem types (#31831)
This PR removes `Decidable*` instances that are not used by the remainder of a theorem's type and so can be replaced by `classical` in the proof (found by the #31142). This allows us to turn on the `unusedDecidableInType` linter, which is done in #31747. Notes: - We rearrange the order of theorems slightly in [Mathlib/Combinatorics/SimpleGraph/Bipartite.lean](https://github.com/leanprover-community/mathlib4/pull/31747/files#diff-8acbd485d15b1e94a2afaf205ebedba12259361421342c715188192f1b0045f8) in order to put the ones that do require `DecidableRel` in a section. - [lean4#5565](leanprover/lean4#5595) forces us to change two `instance`s to `@[instance] theorem` because of a failure in `omit`. We preserve the autogenerated name here. Co-authored-by: thorimur <thomasmurrills@gmail.com>
1 parent cb2efa6 commit 56c98a5

File tree

17 files changed

+85
-50
lines changed

17 files changed

+85
-50
lines changed

Archive/Wiedijk100Theorems/Partition.lean

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,11 @@ theorem coeff_indicator (s : Set ℕ) [Semiring α] (n : ℕ) [Decidable (n ∈
9797
coeff n (indicatorSeries α s) = if n ∈ s then 1 else 0 := by
9898
convert coeff_mk _ _
9999

100-
theorem coeff_indicator_pos (s : Set ℕ) [Semiring α] (n : ℕ) (h : n ∈ s) [Decidable (n ∈ s)] :
101-
coeff n (indicatorSeries α s) = 1 := by rw [coeff_indicator, if_pos h]
100+
theorem coeff_indicator_pos (s : Set ℕ) [Semiring α] (n : ℕ) (h : n ∈ s) :
101+
coeff n (indicatorSeries α s) = 1 := by classical rw [coeff_indicator, if_pos h]
102102

103-
theorem coeff_indicator_neg (s : Set ℕ) [Semiring α] (n : ℕ) (h : n ∉ s) [Decidable (n ∈ s)] :
104-
coeff n (indicatorSeries α s) = 0 := by rw [coeff_indicator, if_neg h]
103+
theorem coeff_indicator_neg (s : Set ℕ) [Semiring α] (n : ℕ) (h : n ∉ s) :
104+
coeff n (indicatorSeries α s) = 0 := by classical rw [coeff_indicator, if_neg h]
105105

106106
theorem constantCoeff_indicator (s : Set ℕ) [Semiring α] [Decidable (0 ∈ s)] :
107107
constantCoeff (indicatorSeries α s) = if 0 ∈ s then 1 else 0 := by

Mathlib/Algebra/GCDMonoid/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,7 @@ open Associates
956956

957957
variable [CancelCommMonoidWithZero α]
958958

959-
private theorem map_mk_unit_aux [DecidableEq α] {f : Associates α →* α}
959+
private theorem map_mk_unit_aux {f : Associates α →* α}
960960
(hinv : Function.RightInverse f Associates.mk) (a : α) :
961961
a * ↑(Classical.choose (associated_map_mk hinv a)) = f (Associates.mk a) :=
962962
Classical.choose_spec (associated_map_mk hinv a)

Mathlib/Algebra/Homology/Homotopy.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -805,9 +805,10 @@ noncomputable def Homotopy.toShortComplex (ho : Homotopy f g) (i : ι) :
805805
rw [congr_arg (fun j => ho.hom (c.next i) j ≫ L.d j (c.next i)) (c.prev_eq' h)]
806806
· abel
807807

808+
omit [DecidableRel c.Rel]
808809
lemma Homotopy.homologyMap_eq (ho : Homotopy f g) (i : ι) [K.HasHomology i] [L.HasHomology i] :
809810
homologyMap f i = homologyMap g i :=
810-
ShortComplex.Homotopy.homologyMap_congr (ho.toShortComplex i)
811+
open scoped Classical in ShortComplex.Homotopy.homologyMap_congr (ho.toShortComplex i)
811812

812813
/-- The isomorphism in homology induced by an homotopy equivalence. -/
813814
noncomputable def HomotopyEquiv.toHomologyIso (h : HomotopyEquiv K L) (i : ι)

Mathlib/Algebra/Homology/HomotopyCofiber.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ lemma eq_desc (f : homotopyCofiber φ ⟶ K) (hc : ∀ j, ∃ i, c.Rel i j) :
340340

341341
end
342342

343+
omit [DecidableRel c.Rel] in
343344
lemma descSigma_ext_iff {φ : F ⟶ G} {K : HomologicalComplex C c}
344345
(x y : Σ (α : G ⟶ K), Homotopy (φ ≫ α) 0) :
345346
x = y ↔ x.1 = y.1 ∧ (∀ (i j : ι) (_ : c.Rel j i), x.2.hom i j = y.2.hom i j) := by
@@ -543,6 +544,7 @@ end
543544

544545
end cylinder
545546

547+
omit [DecidableRel c.Rel] in
546548
/-- If a functor inverts homotopy equivalences, it sends homotopic maps to the same map. -/
547549
lemma _root_.Homotopy.map_eq_of_inverts_homotopyEquivalences
548550
{φ₀ φ₁ : F ⟶ G} (h : Homotopy φ₀ φ₁) (hc : ∀ j, ∃ i, c.Rel i j)
@@ -551,6 +553,7 @@ lemma _root_.Homotopy.map_eq_of_inverts_homotopyEquivalences
551553
{D : Type*} [Category D] (H : HomologicalComplex C c ⥤ D)
552554
(hH : (homotopyEquivalences C c).IsInvertedBy H) :
553555
H.map φ₀ = H.map φ₁ := by
556+
classical
554557
simp only [← cylinder.ι₀_desc _ _ h, ← cylinder.ι₁_desc _ _ h, H.map_comp,
555558
cylinder.map_ι₀_eq_map_ι₁ _ hc _ hH]
556559

Mathlib/Algebra/Polynomial/Roots.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -831,8 +831,9 @@ theorem card_roots_map_le_natDegree {A B : Type*} [Semiring A] [CommRing B] [IsD
831831
card_roots' _ |>.trans natDegree_map_le
832832

833833
theorem filter_roots_map_range_eq_map_roots [IsDomain A] [IsDomain B] {f : A →+* B}
834-
[DecidableEq A] [DecidableEq B] [DecidablePred (· ∈ f.range)] (hf : Function.Injective f)
834+
[DecidablePred (· ∈ f.range)] (hf : Function.Injective f)
835835
(p : A[X]) : (p.map f).roots.filter (· ∈ f.range) = p.roots.map f := by
836+
classical
836837
ext b
837838
rw [Multiset.count_filter]
838839
split_ifs with h

Mathlib/Analysis/AbsoluteValue/Equivalence.lean

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ open scoped Topology
163163

164164
variable {R S : Type*} [Field R] [Field S] [LinearOrder S] {v w : AbsoluteValue R S}
165165
[TopologicalSpace S] [IsStrictOrderedRing S] [Archimedean S] [OrderTopology S]
166-
{ι : Type*} [Fintype ι] [DecidableEq ι] {v : ι → AbsoluteValue R S} {w : AbsoluteValue R S}
166+
{ι : Type*} [Fintype ι] {v : ι → AbsoluteValue R S} {w : AbsoluteValue R S}
167167
{a b : R} {i : ι}
168168

169169
/--
@@ -179,6 +179,7 @@ each `v j` for `j ≠ i`.
179179
private theorem exists_one_lt_lt_one_pi_of_eq_one (ha : 1 < v i a) (haj : ∀ j ≠ i, v j a < 1)
180180
(haw : w a = 1) (hb : 1 < v i b) (hbw : w b < 1) :
181181
∃ k : R, 1 < v i k ∧ (∀ j ≠ i, v j k < 1) ∧ w k < 1 := by
182+
classical
182183
let c : ℕ → R := fun n ↦ a ^ n * b
183184
have hcᵢ : Tendsto (fun n ↦ (v i) (c n)) atTop atTop := by
184185
simpa [c] using Tendsto.atTop_mul_const (by linarith) (tendsto_pow_atTop_atTop_of_one_lt ha)
@@ -206,6 +207,7 @@ each `v j` for `j ≠ i`.
206207
private theorem exists_one_lt_lt_one_pi_of_one_lt (ha : 1 < v i a) (haj : ∀ j ≠ i, v j a < 1)
207208
(haw : 1 < w a) (hb : 1 < v i b) (hbw : w b < 1) :
208209
∃ k : R, 1 < v i k ∧ (∀ j ≠ i, v j k < 1) ∧ w k < 1 := by
210+
classical
209211
let c : ℕ → R := fun n ↦ 1 / (1 + a⁻¹ ^ n) * b
210212
have hcᵢ : Tendsto (fun n ↦ v i (c n)) atTop (𝓝 (v i b)) := by
211213
have : v i a⁻¹ < 1 := map_inv₀ (v i) a ▸ inv_lt_one_of_one_lt₀ ha
@@ -239,12 +241,13 @@ absolute values, then for any `i` there is some `a : R` such that `1 < v i a` an
239241
theorem exists_one_lt_lt_one_pi_of_not_isEquiv (h : ∀ i, (v i).IsNontrivial)
240242
(hv : Pairwise fun i j ↦ ¬(v i).IsEquiv (v j)) :
241243
∀ i, ∃ (a : R), 1 < v i a ∧ ∀ j ≠ i, v j a < 1 := by
242-
let P (ι : Type _) [Fintype ι] : Prop := [DecidableEq ι] →
244+
classical
245+
let P (ι : Type _) [Fintype ι] : Prop :=
243246
∀ v : ι → AbsoluteValue R S, (∀ i, (v i).IsNontrivial) →
244247
(Pairwise fun i j ↦ ¬(v i).IsEquiv (v j)) → ∀ i, ∃ (a : R), 1 < v i a ∧ ∀ j ≠ i, v j a < 1
245248
-- Use strong induction on the index.
246-
revert hv h; refine induction_subsingleton_or_nontrivial (P := P) ι (fun ι _ _ _ v h hv i ↦ ?_)
247-
(fun ι _ _ ih _ v h hv i ↦ ?_) v
249+
revert hv h; refine induction_subsingleton_or_nontrivial (P := P) ι (fun ι _ _ v h hv i ↦ ?_)
250+
(fun ι _ _ ih v h hv i ↦ ?_) v
248251
· -- If `ι` is trivial this follows immediately from `(v i).IsNontrivial`.
249252
let ⟨a, ha⟩ := (h i).exists_abv_gt_one
250253
exact ⟨a, ha, fun j hij ↦ absurd (Subsingleton.elim i j) hij.symm⟩

Mathlib/Analysis/InnerProductSpace/TensorProduct.lean

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -435,16 +435,18 @@ theorem ext_iff_inner_left_threefold' {x y : E ⊗[𝕜] (F ⊗[𝕜] G)} :
435435
end TensorProduct
436436

437437
section orthonormal
438-
variable {ι₁ ι₂ : Type*} [DecidableEq ι₁] [DecidableEq ι₂]
438+
variable {ι₁ ι₂ : Type*}
439439

440440
open Module
441441

442442
/-- The tensor product of two orthonormal vectors is orthonormal. -/
443443
theorem Orthonormal.tmul
444444
{b₁ : ι₁ → E} {b₂ : ι₂ → F} (hb₁ : Orthonormal 𝕜 b₁) (hb₂ : Orthonormal 𝕜 b₂) :
445-
Orthonormal 𝕜 fun i : ι₁ × ι₂ ↦ b₁ i.1 ⊗ₜ[𝕜] b₂ i.2 :=
446-
orthonormal_iff_ite.mpr fun ⟨i₁, i₂⟩ ⟨j₁, j₂⟩ => by
447-
simp [orthonormal_iff_ite.mp, hb₁, hb₂, ← ite_and, and_comm]
445+
Orthonormal 𝕜 fun i : ι₁ × ι₂ ↦ b₁ i.1 ⊗ₜ[𝕜] b₂ i.2 := by
446+
classical
447+
rw [orthonormal_iff_ite]
448+
rintro ⟨i₁, i₂⟩ ⟨j₁, j₂⟩
449+
simp [orthonormal_iff_ite.mp, hb₁, hb₂, ← ite_and, and_comm]
448450

449451
/-- The tensor product of two orthonormal bases is orthonormal. -/
450452
theorem Orthonormal.basisTensorProduct

Mathlib/Combinatorics/SimpleGraph/Bipartite.lean

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,16 @@ theorem isBipartiteWith_neighborSet_disjoint' (h : G.IsBipartiteWith s t) (hw :
142142
Disjoint (G.neighborSet w) t :=
143143
Set.disjoint_of_subset_left (isBipartiteWith_neighborSet_subset' h hw) h.disjoint
144144

145-
variable {s t : Finset V} [DecidableRel G.Adj]
145+
variable {s t : Finset V}
146146

147147
section
148148

149149
variable [Fintype ↑(G.neighborSet v)] [Fintype ↑(G.neighborSet w)]
150150

151+
section decidableRel
152+
153+
variable [DecidableRel G.Adj]
154+
151155
/-- If `G.IsBipartiteWith s t` and `v ∈ s`, then the neighbor finset of `v` is the set of vertices
152156
in `s` adjacent to `v` in `G`. -/
153157
theorem isBipartiteWith_neighborFinset (h : G.IsBipartiteWith s t) (hv : v ∈ s) :
@@ -156,19 +160,35 @@ theorem isBipartiteWith_neighborFinset (h : G.IsBipartiteWith s t) (hv : v ∈ s
156160
rw [mem_neighborFinset, mem_filter, iff_and_self]
157161
exact h.mem_of_mem_adj hv
158162

163+
/-- If `G.IsBipartiteWith s t` and `w ∈ t`, then the neighbor finset of `w` is the set of vertices
164+
in `s` adjacent to `w` in `G`. -/
165+
theorem isBipartiteWith_neighborFinset' (h : G.IsBipartiteWith s t) (hw : w ∈ t) :
166+
G.neighborFinset w = { v ∈ s | G.Adj v w } := by
167+
ext v
168+
rw [mem_neighborFinset, adj_comm, mem_filter, iff_and_self]
169+
exact h.mem_of_mem_adj' hw
170+
159171
/-- If `G.IsBipartiteWith s t` and `v ∈ s`, then the neighbor finset of `v` is the set of vertices
160172
"above" `v` according to the adjacency relation of `G`. -/
161173
theorem isBipartiteWith_bipartiteAbove (h : G.IsBipartiteWith s t) (hv : v ∈ s) :
162174
G.neighborFinset v = bipartiteAbove G.Adj t v := by
163175
rw [isBipartiteWith_neighborFinset h hv, bipartiteAbove]
164176

177+
/-- If `G.IsBipartiteWith s t` and `w ∈ t`, then the neighbor finset of `w` is the set of vertices
178+
"below" `w` according to the adjacency relation of `G`. -/
179+
theorem isBipartiteWith_bipartiteBelow (h : G.IsBipartiteWith s t) (hw : w ∈ t) :
180+
G.neighborFinset w = bipartiteBelow G.Adj s w := by
181+
rw [isBipartiteWith_neighborFinset' h hw, bipartiteBelow]
182+
183+
end decidableRel
184+
165185
/-- If `G.IsBipartiteWith s t` and `v ∈ s`, then the neighbor finset of `v` is a subset of `s`. -/
166186
theorem isBipartiteWith_neighborFinset_subset (h : G.IsBipartiteWith s t) (hv : v ∈ s) :
167187
G.neighborFinset v ⊆ t := by
188+
classical
168189
rw [isBipartiteWith_neighborFinset h hv]
169190
exact filter_subset (G.Adj v ·) t
170191

171-
omit [DecidableRel G.Adj] in
172192
/-- If `G.IsBipartiteWith s t` and `v ∈ s`, then the neighbor finset of `v` is disjoint to `s`. -/
173193
theorem isBipartiteWith_neighborFinset_disjoint (h : G.IsBipartiteWith s t) (hv : v ∈ s) :
174194
Disjoint (G.neighborFinset v) s := by
@@ -181,27 +201,13 @@ theorem isBipartiteWith_degree_le (h : G.IsBipartiteWith s t) (hv : v ∈ s) : G
181201
rw [← card_neighborFinset_eq_degree]
182202
exact card_le_card (isBipartiteWith_neighborFinset_subset h hv)
183203

184-
/-- If `G.IsBipartiteWith s t` and `w ∈ t`, then the neighbor finset of `w` is the set of vertices
185-
in `s` adjacent to `w` in `G`. -/
186-
theorem isBipartiteWith_neighborFinset' (h : G.IsBipartiteWith s t) (hw : w ∈ t) :
187-
G.neighborFinset w = { v ∈ s | G.Adj v w } := by
188-
ext v
189-
rw [mem_neighborFinset, adj_comm, mem_filter, iff_and_self]
190-
exact h.mem_of_mem_adj' hw
191-
192-
/-- If `G.IsBipartiteWith s t` and `w ∈ t`, then the neighbor finset of `w` is the set of vertices
193-
"below" `w` according to the adjacency relation of `G`. -/
194-
theorem isBipartiteWith_bipartiteBelow (h : G.IsBipartiteWith s t) (hw : w ∈ t) :
195-
G.neighborFinset w = bipartiteBelow G.Adj s w := by
196-
rw [isBipartiteWith_neighborFinset' h hw, bipartiteBelow]
197-
198204
/-- If `G.IsBipartiteWith s t` and `w ∈ t`, then the neighbor finset of `w` is a subset of `s`. -/
199205
theorem isBipartiteWith_neighborFinset_subset' (h : G.IsBipartiteWith s t) (hw : w ∈ t) :
200206
G.neighborFinset w ⊆ s := by
207+
classical
201208
rw [isBipartiteWith_neighborFinset' h hw]
202209
exact filter_subset (G.Adj · w) s
203210

204-
omit [DecidableRel G.Adj] in
205211
/-- If `G.IsBipartiteWith s t` and `w ∈ t`, then the neighbor finset of `w` is disjoint to `t`. -/
206212
theorem isBipartiteWith_neighborFinset_disjoint' (h : G.IsBipartiteWith s t) (hw : w ∈ t) :
207213
Disjoint (G.neighborFinset w) t := by
@@ -222,6 +228,7 @@ of the degrees of vertices in `t`.
222228
See `Finset.sum_card_bipartiteAbove_eq_sum_card_bipartiteBelow`. -/
223229
theorem isBipartiteWith_sum_degrees_eq [G.LocallyFinite] (h : G.IsBipartiteWith s t) :
224230
∑ v ∈ s, G.degree v = ∑ w ∈ t, G.degree w := by
231+
classical
225232
simp_rw [← sum_attach t, ← sum_attach s, ← card_neighborFinset_eq_degree]
226233
conv_lhs =>
227234
rhs; intro v
@@ -233,7 +240,7 @@ theorem isBipartiteWith_sum_degrees_eq [G.LocallyFinite] (h : G.IsBipartiteWith
233240
sum_attach t fun v ↦ #(bipartiteBelow G.Adj s v)]
234241
exact sum_card_bipartiteAbove_eq_sum_card_bipartiteBelow G.Adj
235242

236-
variable [Fintype V]
243+
variable [Fintype V] [DecidableRel G.Adj]
237244

238245
lemma isBipartiteWith_sum_degrees_eq_twice_card_edges [DecidableEq V] (h : G.IsBipartiteWith s t) :
239246
∑ v ∈ s ∪ t, G.degree v = 2 * #G.edgeFinset := by

Mathlib/Combinatorics/SimpleGraph/Coloring.lean

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,8 +430,9 @@ theorem chromaticNumber_top_eq_top_of_infinite (V : Type*) [Infinite V] :
430430
obtain ⟨n, ⟨hn⟩⟩ := hc
431431
exact not_injective_infinite_finite _ hn.injective_of_top_hom
432432

433-
theorem eq_top_of_chromaticNumber_eq_card [DecidableEq V] [Fintype V]
433+
theorem eq_top_of_chromaticNumber_eq_card [Fintype V]
434434
(h : G.chromaticNumber = Fintype.card V) : G = ⊤ := by
435+
classical
435436
by_contra! hh
436437
have : G.chromaticNumber ≤ Fintype.card V - 1 := by
437438
obtain ⟨a, b, hne, _⟩ := ne_top_iff_exists_not_adj.mp hh
@@ -443,7 +444,7 @@ theorem eq_top_of_chromaticNumber_eq_card [DecidableEq V] [Fintype V]
443444
have := Fintype.one_lt_card_iff_nontrivial.mpr <| SimpleGraph.nontrivial_iff.mp ⟨_, _, hh⟩
444445
grind
445446

446-
theorem chromaticNumber_eq_card_iff [DecidableEq V] [Fintype V] :
447+
theorem chromaticNumber_eq_card_iff [Fintype V] :
447448
G.chromaticNumber = Fintype.card V ↔ G = ⊤ :=
448449
⟨eq_top_of_chromaticNumber_eq_card, fun h ↦ h ▸ chromaticNumber_top⟩
449450

Mathlib/Combinatorics/SimpleGraph/FiveWheelLike.lean

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,12 @@ lemma exists_max_isFiveWheelLike_of_maximal_cliqueFree_not_isCompleteMultipartit
228228
lemma CliqueFree.fiveWheelLikeFree_of_le (h : G.CliqueFree (r + 2)) (hk : r ≤ k) :
229229
G.FiveWheelLikeFree r k := fun hw ↦ (hw.card_inter_lt_of_cliqueFree h).not_ge hk
230230

231+
end withDecEq
232+
231233
/-- A maximally `Kᵣ₊₁`-free graph is `r`-colorable iff it is complete-multipartite. -/
232234
theorem colorable_iff_isCompleteMultipartite_of_maximal_cliqueFree
233235
(h : Maximal (fun H => H.CliqueFree (r + 1)) G) : G.Colorable r ↔ G.IsCompleteMultipartite := by
236+
classical
234237
match r with
235238
| 0 => exact ⟨fun _ ↦ fun x ↦ cliqueFree_one.1 h.1 |>.elim' x,
236239
fun _ ↦ G.colorable_zero_iff.2 <| cliqueFree_one.1 h.1
@@ -241,8 +244,6 @@ theorem colorable_iff_isCompleteMultipartite_of_maximal_cliqueFree
241244
exists_isFiveWheelLike_of_maximal_cliqueFree_not_isCompleteMultipartite h hc
242245
exact hw.not_colorable_succ
243246

244-
end withDecEq
245-
246247
section AES
247248
variable {i j n : ℕ} {d x v w₁ w₂ : α} {s t : Finset α}
248249

@@ -411,8 +412,6 @@ lemma minDegree_le_of_cliqueFree_fiveWheelLikeFree_succ [Fintype α]
411412

412413
end IsFiveWheelLike
413414

414-
variable [DecidableEq α]
415-
416415
/-- **Andrasfái-Erdős-Sós** theorem
417416
418417
If `G` is a `Kᵣ₊₁`-free graph with `n` vertices and `(3 * r - 4) * n / (3 * r - 1) < G.minDegree`
@@ -425,6 +424,7 @@ theorem colorable_of_cliqueFree_lt_minDegree [Fintype α] [DecidableRel G.Adj]
425424
match r with
426425
| 0 | 1 => aesop
427426
| r + 2 =>
427+
classical
428428
-- There is an edge maximal `Kᵣ₊₃`-free supergraph `H` of `G`
429429
obtain ⟨H, hle, hmcf⟩ := @Finite.exists_le_maximal _ _ _ (fun H ↦ H.CliqueFree (r + 3)) G hf
430430
-- If `H` is `r + 2`-colorable then so is `G`
@@ -436,7 +436,6 @@ theorem colorable_of_cliqueFree_lt_minDegree [Fintype α] [DecidableRel G.Adj]
436436
-- Hence `H` contains `Wᵣ₊₁,ₖ` but not `Wᵣ₊₁,ₖ₊₁`, for some `k < r + 1`
437437
obtain ⟨k, _, _, _, _, _, hw, hlt, hm⟩ :=
438438
exists_max_isFiveWheelLike_of_maximal_cliqueFree_not_isCompleteMultipartite hmcf hn
439-
classical
440439
-- But the minimum degree of `G`, and hence of `H`, is too large for it to be `Wᵣ₊₁,ₖ₊₁`-free,
441440
-- a contradiction.
442441
have hD := hw.minDegree_le_of_cliqueFree_fiveWheelLikeFree_succ hmcf.1 <| hm _ <| lt_add_one _

0 commit comments

Comments
 (0)