Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit ee7a886

Browse files
committed
feat({data/{finset,set},order/filter}/pointwise): Missing smul_comm_class instances (#14963)
Instances of the form `smul_comm_class α β (something γ)`.
1 parent 32b08ef commit ee7a886

File tree

4 files changed

+31
-5
lines changed

4 files changed

+31
-5
lines changed

src/data/finset/basic.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1913,6 +1913,11 @@ by { subst h, simp }
19131913
theorem map_map {g : β ↪ γ} : (s.map f).map g = s.map (f.trans g) :=
19141914
eq_of_veq $ by simp only [map_val, multiset.map_map]; refl
19151915

1916+
lemma map_comm {β'} {f : β ↪ γ} {g : α ↪ β} {f' : α ↪ β'} {g' : β' ↪ γ}
1917+
(h_comm : ∀ a, f (g a) = g' (f' a)) :
1918+
(s.map g).map f = (s.map f').map g' :=
1919+
by simp_rw [map_map, embedding.trans, function.comp, h_comm]
1920+
19161921
@[simp] theorem map_subset_map {s₁ s₂ : finset α} : s₁.map f ⊆ s₂.map f ↔ s₁ ⊆ s₂ :=
19171922
⟨λ h x xs, (mem_map' _).1 $ h $ (mem_map' f).2 xs,
19181923
λ h, by simp [subset_def, map_subset_map h]⟩
@@ -2082,6 +2087,11 @@ ext $ λ _, by simp only [mem_image, exists_prop, id, exists_eq_right]
20822087
theorem image_image [decidable_eq γ] {g : β → γ} : (s.image f).image g = s.image (g ∘ f) :=
20832088
eq_of_veq $ by simp only [image_val, dedup_map_dedup_eq, multiset.map_map]
20842089

2090+
lemma image_comm {β'} [decidable_eq β'] [decidable_eq γ] {f : β → γ} {g : α → β}
2091+
{f' : α → β'} {g' : β' → γ} (h_comm : ∀ a, f (g a) = g' (f' a)) :
2092+
(s.image g).image f = (s.image f').image g' :=
2093+
by simp_rw [image_image, comp, h_comm]
2094+
20852095
theorem image_subset_image {s₁ s₂ : finset α} (h : s₁ ⊆ s₂) : s₁.image f ⊆ s₂.image f :=
20862096
by simp only [subset_def, image_val, subset_dedup', dedup_subset',
20872097
multiset.map_subset_map h]

src/data/finset/pointwise.lean

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -773,12 +773,17 @@ section instances
773773
variables [decidable_eq γ]
774774

775775
@[to_additive]
776-
instance smul_comm_class_set [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
776+
instance smul_comm_class_finset [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
777+
smul_comm_class α β (finset γ) :=
778+
⟨λ _ _ _, image_comm $ smul_comm _ _⟩
779+
780+
@[to_additive]
781+
instance smul_comm_class_finset' [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
777782
smul_comm_class α (finset β) (finset γ) :=
778783
⟨λ a s t, coe_injective $ by simp only [coe_smul_finset, coe_smul, smul_comm]⟩
779784

780785
@[to_additive]
781-
instance smul_comm_class_set' [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
786+
instance smul_comm_class_finset'' [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
782787
smul_comm_class (finset α) β (finset γ) :=
783788
by haveI := smul_comm_class.symm α β γ; exact smul_comm_class.symm _ _ _
784789

src/data/set/pointwise.lean

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,8 @@ variables {ι : Sort*} {κ : ι → Sort*} [has_scalar α β] {s t t₁ t₂ : s
884884

885885
@[simp, to_additive] lemma smul_set_singleton : a • ({b} : set β) = {a • b} := image_singleton
886886

887-
@[to_additive] lemma smul_set_mono (h : s ⊆ t) : a • s ⊆ a • t := image_subset _ h
887+
@[to_additive] lemma smul_set_mono : s ⊆ t → a • s ⊆ a • t := image_subset _
888+
@[to_additive] lemma smul_set_subset_iff : a • s ⊆ t ↔ ∀ ⦃b⦄, b ∈ s → a • b ∈ t := image_subset_iff
888889

889890
@[to_additive] lemma smul_set_union : a • (t₁ ∪ t₂) = a • t₁ ∪ a • t₂ := image_union _ _ _
890891

@@ -944,11 +945,16 @@ ext $ λ x, ⟨λ hx, let ⟨p, q, ⟨i, hi⟩, ⟨j, hj⟩, hpq⟩ := set.mem_s
944945

945946
@[to_additive]
946947
instance smul_comm_class_set [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
948+
smul_comm_class α β (set γ) :=
949+
⟨λ _ _ _, image_comm $ smul_comm _ _⟩
950+
951+
@[to_additive]
952+
instance smul_comm_class_set' [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
947953
smul_comm_class α (set β) (set γ) :=
948954
⟨λ _ _ _, image_image2_distrib_right $ smul_comm _⟩
949955

950956
@[to_additive]
951-
instance smul_comm_class_set' [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
957+
instance smul_comm_class_set'' [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
952958
smul_comm_class (set α) β (set γ) :=
953959
by haveI := smul_comm_class.symm α β γ; exact smul_comm_class.symm _ _ _
954960

src/order/filter/pointwise.lean

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -618,11 +618,16 @@ open_locale pointwise
618618

619619
@[to_additive]
620620
instance smul_comm_class_filter [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
621+
smul_comm_class α β (filter γ) :=
622+
⟨λ _ _ _, map_comm (funext $ smul_comm _ _) _⟩
623+
624+
@[to_additive]
625+
instance smul_comm_class_filter' [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
621626
smul_comm_class α (filter β) (filter γ) :=
622627
⟨λ a f g, map_map₂_distrib_right $ smul_comm a⟩
623628

624629
@[to_additive]
625-
instance smul_comm_class_filter' [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
630+
instance smul_comm_class_filter'' [has_scalar α γ] [has_scalar β γ] [smul_comm_class α β γ] :
626631
smul_comm_class (filter α) β (filter γ) :=
627632
by haveI := smul_comm_class.symm α β γ; exact smul_comm_class.symm _ _ _
628633

0 commit comments

Comments
 (0)