Skip to content

Commit d18bb63

Browse files
committed
chore: make _root_.toContinuousMap reducible (leanprover-community#40477)
If a structure extends `ContinuousMap` and also carries an instance of `ContinuousMapClass` then it will have two `toContinuousMap` functions available to it. Without this change, at non-reducible transparency Lean is unable to see that these two are defeq (assuming we have written a sane API and they are!). The motivating example is the `Path` structure where the lack of this reducibility was responsible for some `backward.isDefEq.respectTransparency false` in leanprover-community#33108.
1 parent bf81df9 commit d18bb63

11 files changed

Lines changed: 14 additions & 14 deletions

File tree

Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ instance IsStarNormal.instNonUnitalIsometricContinuousFunctionalCalculus :
212212
rw [← norm_inr (𝕜 := ℂ), ← inrNonUnitalStarAlgHom_apply, ← NonUnitalStarAlgHom.comp_apply,
213213
inr_comp_cfcₙHom_eq_cfcₙAux a, cfcₙAux]
214214
simp only [NonUnitalStarAlgHom.comp_assoc, NonUnitalStarAlgHom.comp_apply,
215-
toContinuousMapHom_apply, NonUnitalStarAlgHom.coe_coe]
215+
NonUnitalStarAlgHom.coe_coe]
216216
rw [norm_cfcHom (a : Unitization ℂ A), StarAlgEquiv.norm_map]
217217
rfl
218218

Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/Isometric.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ protected theorem isometric_cfc (f : C(S, R)) (halg : Isometry (algebraMap R S))
387387
· simpa [halg.dist_eq] using! ContinuousMap.dist_apply_le_dist _
388388
· let x' : σₙ S a := Subtype.map (algebraMap R S) (fun _ ↦ quasispectrum.algebraMap_mem S) x
389389
apply le_of_eq_of_le ?_ <| ContinuousMap.dist_apply_le_dist x'
390-
simp only [ContinuousMap.coe_coe, ContinuousMapZero.comp_apply, ContinuousMapZero.coe_mk,
390+
simp only [ContinuousMapZero.comp_apply, ContinuousMapZero.coe_mk,
391391
ContinuousMap.coe_mk, StarAlgHom.ofId_apply, halg.dist_eq, x']
392392
congr! 2
393393
all_goals ext; exact haf.left_inv _ |>.symm

Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/NonUnital.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,7 @@ lemma cfcₙ_eq_cfc [ContinuousFunctionalCalculus R A p] [ContinuousMapZero.Uniq
873873
by_cases ha : p a
874874
· have hf' := hf.mono <| spectrum_subset_quasispectrum R a
875875
rw [cfc_apply f a ha hf', cfcₙ_apply f a hf, cfcₙHom_eq_cfcₙHom_of_cfcHom, cfcₙHom_of_cfcHom]
876-
dsimp only [NonUnitalStarAlgHom.comp_apply, toContinuousMapHom_apply,
876+
dsimp only [NonUnitalStarAlgHom.comp_apply,
877877
NonUnitalStarAlgHom.coe_coe, compStarAlgHom'_apply]
878878
congr
879879
· simp [cfc_apply_of_not_predicate a ha, cfcₙ_apply_of_not_predicate (R := R) a ha]

Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/Unique.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,14 +262,14 @@ lemma toNNReal_mul_add_neg_mul_add_mul_neg_eq (f g : C(X, ℝ)₀) :
262262
((f * g).toNNReal + (-f).toNNReal * g.toNNReal + f.toNNReal * (-g).toNNReal) =
263263
((-(f * g)).toNNReal + f.toNNReal * g.toNNReal + (-f).toNNReal * (-g).toNNReal) := by
264264
apply toContinuousMap_injective
265-
simpa only [← toContinuousMapHom_apply, map_add, map_mul, map_neg, toContinuousMapHom_toNNReal]
265+
simpa only [map_add, map_mul, map_neg, toContinuousMapHom_toNNReal]
266266
using! (f : C(X, ℝ)).toNNReal_mul_add_neg_mul_add_mul_neg_eq g
267267

268268
lemma toNNReal_add_add_neg_add_neg_eq (f g : C(X, ℝ)₀) :
269269
((f + g).toNNReal + (-f).toNNReal + (-g).toNNReal) =
270270
((-(f + g)).toNNReal + f.toNNReal + g.toNNReal) := by
271271
apply toContinuousMap_injective
272-
simpa only [← toContinuousMapHom_apply, map_add, map_mul, map_neg, toContinuousMapHom_toNNReal]
272+
simpa only [map_add, map_mul, map_neg, toContinuousMapHom_toNNReal]
273273
using! (f : C(X, ℝ)).toNNReal_add_add_neg_add_neg_eq g
274274

275275
end ContinuousMapZero

Mathlib/Analysis/RCLike/BoundedContinuous.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ theorem restrict_toContinuousMap_eq_toContinuousMapStar_restrict
3232
(ofRealAm.compLeftContinuous ℝ continuous_ofReal) := by
3333
ext g
3434
simp only [Subalgebra.mem_map, Subalgebra.mem_comap, Subalgebra.mem_restrictScalars,
35-
StarSubalgebra.mem_toSubalgebra, toContinuousMapₐ_apply, StarSubalgebra.mem_map]
35+
StarSubalgebra.mem_toSubalgebra, StarSubalgebra.mem_map]
3636
constructor
3737
· intro ⟨x, hxA, hxg⟩
3838
use (@ofRealAm 𝕜 _).compLeftContinuousBounded ℝ lipschitzWith_ofReal x, hxA

Mathlib/Topology/ContinuousMap/ContinuousMapZero.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ def toContinuousMapHom [StarRing R] [ContinuousStar R] : C(X, R)₀ →⋆ₙₐ
329329
map_mul' _ _ := rfl
330330
map_star' _ := rfl
331331

332-
lemma coe_toContinuousMapHom [StarRing R] [ContinuousStar R] :
332+
@[simp] lemma coe_toContinuousMapHom [StarRing R] [ContinuousStar R] :
333333
⇑(toContinuousMapHom (X := X) (R := R)) = (↑) :=
334334
rfl
335335

Mathlib/Topology/ContinuousMap/Defs.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ variable {F X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y] [FunLike F X
6161
variable [ContinuousMapClass F X Y]
6262

6363
/-- Coerce a bundled morphism with a `ContinuousMapClass` instance to a `ContinuousMap`. -/
64-
@[coe] def toContinuousMap (f : F) : C(X, Y) := ⟨f, map_continuous f⟩
64+
@[coe, reducible] def toContinuousMap (f : F) : C(X, Y) := ⟨f, map_continuous f⟩
6565

6666
instance : CoeTC F C(X, Y) := ⟨toContinuousMap⟩
6767

Mathlib/Topology/ContinuousMap/Ideals.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ theorem idealOfSet_ofIdeal_eq_closure (I : Ideal C(X, 𝕜)) :
268268
pow_pos (norm_pos_iff.mpr hx.1) 2⟩⟩
269269
convert! I.mul_mem_left (star g) hI
270270
ext
271-
simp only [comp_apply, ContinuousMap.coe_coe, coe_mk, algebraMapCLM_apply, map_pow,
271+
simp only [comp_apply, coe_mk, algebraMapCLM_apply, map_pow,
272272
mul_apply, star_apply, star_def]
273273
simp only [RCLike.conj_mul]
274274
rfl

Mathlib/Topology/ContinuousMap/StoneWeierstrass.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -632,10 +632,10 @@ lemma ContinuousMapZero.adjoin_id_dense (s : Set 𝕜) [Fact (0 ∈ s)]
632632
← isClosedEmbedding_toContinuousMap.injective.preimage_image (closure _),
633633
← isClosedEmbedding_toContinuousMap.closure_image_eq, ← coe_toContinuousMapHom,
634634
← NonUnitalStarSubalgebra.coe_map, NonUnitalStarAlgHom.map_adjoin_singleton,
635-
toContinuousMapHom_apply, toContinuousMap_id,
635+
coe_toContinuousMapHom, toContinuousMap_id,
636636
← ContinuousMap.ker_evalStarAlgHom_eq_closure_adjoin_id s h0']
637637
apply Set.eq_univ_of_forall fun f ↦ ?_
638-
simp only [Set.mem_preimage, toContinuousMapHom_apply, SetLike.mem_coe, RingHom.mem_ker,
638+
simp only [Set.mem_preimage, SetLike.mem_coe, RingHom.mem_ker,
639639
ContinuousMap.evalStarAlgHom_apply, ContinuousMap.coe_coe]
640640
exact map_zero f
641641

Mathlib/Topology/Homotopy/HomotopyGroup.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ def fromLoop (i : N) (p : Ω (Ω^ { j // j ≠ i } X x) const) : Ω^ N X x :=
285285
(Cube.splitAt i),
286286
by
287287
rintro y ⟨j, Hj⟩
288-
simp only [ContinuousMap.comp_apply, ContinuousMap.coe_coe,
288+
simp only [ContinuousMap.comp_apply,
289289
funSplitAt_apply, ContinuousMap.uncurry_apply, ContinuousMap.coe_mk,
290290
Function.uncurry_apply_pair]
291291
obtain rfl | Hne := eq_or_ne j i

0 commit comments

Comments
 (0)