diff --git a/src/data/equiv/basic.lean b/src/data/equiv/basic.lean index 46134a8b65eb2..e2b95dd080c76 100644 --- a/src/data/equiv/basic.lean +++ b/src/data/equiv/basic.lean @@ -1792,6 +1792,20 @@ end end equiv +lemma function.injective.swap_apply [decidable_eq α] [decidable_eq β] {f : α → β} + (hf : function.injective f) (x y z : α) : + equiv.swap (f x) (f y) (f z) = f (equiv.swap x y z) := +begin + by_cases hx : z = x, by simp [hx], + by_cases hy : z = y, by simp [hy], + rw [equiv.swap_apply_of_ne_of_ne hx hy, equiv.swap_apply_of_ne_of_ne (hf.ne hx) (hf.ne hy)] +end + +lemma function.injective.swap_comp [decidable_eq α] [decidable_eq β] {f : α → β} + (hf : function.injective f) (x y : α) : + equiv.swap (f x) (f y) ∘ f = f ∘ equiv.swap x y := +funext $ λ z, hf.swap_apply _ _ _ + instance {α} [subsingleton α] : subsingleton (ulift α) := equiv.ulift.subsingleton instance {α} [subsingleton α] : subsingleton (plift α) := equiv.plift.subsingleton diff --git a/src/logic/embedding.lean b/src/logic/embedding.lean index 66da93dceef13..ceb1442030beb 100644 --- a/src/logic/embedding.lean +++ b/src/logic/embedding.lean @@ -205,6 +205,14 @@ open set @[simps apply] protected def image {α β} (f : α ↪ β) : set α ↪ set β := ⟨image f, f.2.image_injective⟩ +lemma swap_apply {α β : Type*} [decidable_eq α] [decidable_eq β] (f : α ↪ β) (x y z : α) : + equiv.swap (f x) (f y) (f z) = f (equiv.swap x y z) := +f.injective.swap_apply x y z + +lemma swap_comp {α β : Type*} [decidable_eq α] [decidable_eq β] (f : α ↪ β) (x y : α) : + equiv.swap (f x) (f y) ∘ f = f ∘ equiv.swap x y := +f.injective.swap_comp x y + end embedding end function