diff --git a/src/algebra/algebra/subalgebra/basic.lean b/src/algebra/algebra/subalgebra/basic.lean index 11db8db83deaf..39a8100e37574 100644 --- a/src/algebra/algebra/subalgebra/basic.lean +++ b/src/algebra/algebra/subalgebra/basic.lean @@ -762,7 +762,10 @@ lemma inclusion_injective {S T : subalgebra R A} (h : S ≤ T) : inclusion (le_refl S) = alg_hom.id R S := alg_hom.ext $ λ x, subtype.ext rfl -@[simp] lemma inclusion_right {S T : subalgebra R A} (h : S ≤ T) (x : T) +@[simp] lemma inclusion_mk {S T : subalgebra R A} (h : S ≤ T) (x : A) (hx : x ∈ S) : + inclusion h ⟨x, hx⟩ = ⟨x, h hx⟩ := rfl + +lemma inclusion_right {S T : subalgebra R A} (h : S ≤ T) (x : T) (m : (x : A) ∈ S) : inclusion h ⟨x, m⟩ = x := subtype.ext rfl @[simp] lemma inclusion_inclusion {S T U : subalgebra R A} (hst : S ≤ T) (htu : T ≤ U) diff --git a/src/data/set/basic.lean b/src/data/set/basic.lean index e3312c00521ab..f89814854c229 100644 --- a/src/data/set/basic.lean +++ b/src/data/set/basic.lean @@ -2227,32 +2227,29 @@ namespace set /-! ### Lemmas about `inclusion`, the injection of subtypes induced by `⊆` -/ section inclusion -variable {α : Type*} +variables {α : Type*} {s t u : set α} /-- `inclusion` is the "identity" function between two subsets `s` and `t`, where `s ⊆ t` -/ -def inclusion {s t : set α} (h : s ⊆ t) : s → t := +def inclusion (h : s ⊆ t) : s → t := λ x : s, (⟨x, h x.2⟩ : t) -@[simp] lemma inclusion_self {s : set α} (x : s) : inclusion subset.rfl x = x := -by { cases x, refl } +@[simp] lemma inclusion_self (x : s) : inclusion subset.rfl x = x := by { cases x, refl } + +@[simp] lemma inclusion_mk {h : s ⊆ t} (a : α) (ha : a ∈ s) : inclusion h ⟨a, ha⟩ = ⟨a, h ha⟩ := rfl -@[simp] lemma inclusion_right {s t : set α} (h : s ⊆ t) (x : t) (m : (x : α) ∈ s) : - inclusion h ⟨x, m⟩ = x := +lemma inclusion_right (h : s ⊆ t) (x : t) (m : (x : α) ∈ s) : inclusion h ⟨x, m⟩ = x := by { cases x, refl } -@[simp] lemma inclusion_inclusion {s t u : set α} (hst : s ⊆ t) (htu : t ⊆ u) - (x : s) : inclusion htu (inclusion hst x) = inclusion (set.subset.trans hst htu) x := +@[simp] lemma inclusion_inclusion (hst : s ⊆ t) (htu : t ⊆ u) (x : s) : + inclusion htu (inclusion hst x) = inclusion (hst.trans htu) x := by { cases x, refl } -@[simp] lemma coe_inclusion {s t : set α} (h : s ⊆ t) (x : s) : - (inclusion h x : α) = (x : α) := rfl +@[simp] lemma coe_inclusion (h : s ⊆ t) (x : s) : (inclusion h x : α) = (x : α) := rfl -lemma inclusion_injective {s t : set α} (h : s ⊆ t) : - function.injective (inclusion h) +lemma inclusion_injective (h : s ⊆ t) : injective (inclusion h) | ⟨_, _⟩ ⟨_, _⟩ := subtype.ext_iff_val.2 ∘ subtype.ext_iff_val.1 -@[simp] lemma range_inclusion {s t : set α} (h : s ⊆ t) : - range (inclusion h) = {x : t | (x:α) ∈ s} := +@[simp] lemma range_inclusion (h : s ⊆ t) : range (inclusion h) = {x : t | (x:α) ∈ s} := by { ext ⟨x, hx⟩, simp [inclusion] } lemma eq_of_inclusion_surjective {s t : set α} {h : s ⊆ t} diff --git a/src/group_theory/subgroup/basic.lean b/src/group_theory/subgroup/basic.lean index d09154d73c2d1..50088d9db5624 100644 --- a/src/group_theory/subgroup/basic.lean +++ b/src/group_theory/subgroup/basic.lean @@ -247,6 +247,18 @@ lemma coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = x ^ n := def inclusion {H K : S} (h : H ≤ K) : H →* K := monoid_hom.mk' (λ x, ⟨x, h x.prop⟩) (λ ⟨a, ha⟩ ⟨b, hb⟩, rfl) +@[simp, to_additive] lemma inclusion_self (x : H) : inclusion le_rfl x = x := by { cases x, refl } +@[simp, to_additive] lemma inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : + inclusion h ⟨x, hx⟩ = ⟨x, h hx⟩ := rfl + +@[to_additive] +lemma inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h ⟨x, hx⟩ = x := +by { cases x, refl } + +@[simp] lemma inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) : + inclusion hKL (inclusion hHK x) = inclusion (hHK.trans hKL) x := +by { cases x, refl } + @[simp, to_additive] lemma coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a := by { cases a, simp only [inclusion, set_like.coe_mk, monoid_hom.mk'_apply] }