@[simp]
theorem Set.preimage_update_of_notMem_notMem {α : Type u_3} {β : Type u_4} [DecidableEq α] {a : α} {b : β} (f : α → β) {s : Set β} (hbs : b ∉ s) (has : f a ∉ s) :
theorem Set.preimage_update_of_notMem_mem {α : Type u_3} {β : Type u_4} [DecidableEq α] {a : α} {b : β} (f : α → β) {s : Set β} (hbs : b ∉ s) (has : f a ∈ s) :
theorem Set.preimage_update_of_mem {α : Type u_3} {β : Type u_4} [DecidableEq α] {a : α} {b : β} (f : α → β) {s : Set β} (hbs : b ∈ s) :
theorem Set.update_injective {α : Type u_3} {β : Type u_4} [DecidableEq α] {f : α → β} {b : β} (hf : Function.Injective f) (a : α) (h : b ∉ range f) :
Function.Injective (Function.update f a b)
@[simp]
theorem Set.BijOn.insert_notMem {α : Type u_1} {β : Type u_2} {f : α → β} {s : Set α} {t : Set β} {x : α} (h : BijOn f s t) (hx : x ∉ s) (hx' : f x ∉ t) :
BijOn f (Insert.insert x s) (Insert.insert (f x) t)
theorem Set.BijOn.bijOn_update {α : Type u_1} {β : Type u_2} {f : α → β} {s : Set α} {t : Set β} {x : α} {y : β} [DecidableEq α] (h : BijOn f s t) (hx : x ∈ s) (hy : y ∉ t) :
BijOn (Function.update f x y) s (Insert.insert y (t \ {f x}))
@[simp]
@[simp]
def Set.Equiv.sumSet {α : Type u_1} {s t : Set α} [DecidablePred fun (x : α) => x ∈ s] (h : Disjoint s t) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem Set.Equiv.sumSet_symm_sum_elim {α : Type u_1} {β : Type u_2} {s t : Set α} [DecidablePred fun (x : α) => x ∈ s] (h : Disjoint s t) {f : α → β} {x : ↑(s ∪ t)} :
theorem Set.RightInvOn.injOn {α : Type u_1} {β : Type u_2} {f : α → β} {g : β → α} {s : Set α} (hinv : RightInvOn f g s) :
InjOn f s
theorem Set.RightInvOn.injOn_image {α : Type u_1} {β : Type u_2} {f : α → β} {g : β → α} {s : Set α} (hinv : RightInvOn f g s) :
theorem Pairwise.of_refl {α : Type u_1} {ι : Type u_3} {r : α → α → Prop} {f : ι → α} [Std.Refl r] (h : Pairwise (Function.onFun r f)) (i j : ι) :
r (f i) (f j)
theorem Pairwise.onFun_of_refl {α : Type u_1} {ι : Type u_3} {r : α → α → Prop} [Std.Refl r] (hr : Pairwise r) (f : ι → α) :
Pairwise (Function.onFun r f)
theorem Pairwise.onFun_comp_of_refl {α : Type u_1} {ι : Type u_3} {ι' : Type u_4} {r : α → α → Prop} {f : ι → α} [Std.Refl r] (hr : Pairwise (Function.onFun r f)) (g : ι' → ι) :
Pairwise (Function.onFun r (f ∘ g))
theorem pairwiseDisjoint_pair {α : Type u_1} {ι : Type u_5} {i j : ι} {f : ι → α} [PartialOrder α] [OrderBot α] (hab : Function.onFun Disjoint f i j) :
{i, j}.PairwiseDisjoint f
theorem pairwiseDisjoint_pair_iff {α : Type u_1} {ι : Type u_5} {i j : ι} {f : ι → α} [PartialOrder α] [OrderBot α] :
@[simp]
theorem Pairwise.const_of_refl {α : Type u_1} {ι : Type u_3} {r : α → α → Prop} [Std.Refl r] (x : α) :
Pairwise (Function.onFun r fun (x_1 : ι) => x)
theorem Set.Pairwise.range_of_injective {α : Type u_1} {ι : Type u_3} {r : α → α → Prop} {f : ι → α} (hf : Function.Injective f) :
theorem Pairwise.restrict {α : Type u_1} {ι : Type u_3} {r : α → α → Prop} {f : ι → α} {s : Set ι} :
theorem Pairwise.sum_left {ι : Type u_3} {ι' : Type u_4} {γ : Type u_5} {G : ι → γ} {H : ι' → γ} {r : γ → γ → Prop} (h : Pairwise (Function.onFun r (Sum.elim G H))) :
Pairwise (Function.onFun r G)
theorem Pairwise.sum_right {ι : Type u_3} {ι' : Type u_4} {γ : Type u_5} {G : ι → γ} {H : ι' → γ} {r : γ → γ → Prop} (h : Pairwise (Function.onFun r (Sum.elim G H))) :
Pairwise (Function.onFun r H)
Factorization along a surjective function #
noncomputable def Function.Surjective.factor {A : Sort u_5} {B : Sort u_6} {C : Sort u_7} {f : A → B} (hf : Surjective f) (g : A → C) :
B → C
Evaluate g at a chosen preimage under the surjection f.
This is a factor of g exactly when g is constant on the fibers of f.
Equations
- hf.factor g = g ∘ Function.surjInv hf
Instances For
theorem Function.FactorsThrough.trans {A : Sort u_5} {B : Sort u_6} {C : Sort u_7} {D : Sort u_8} {f : A → B} {g : A → C} {k : A → D} (hg : FactorsThrough g f) (hf : FactorsThrough f k) :
FactorsThrough g k
Fiber containment is transitive, even when the codomains differ.
@[simp]
theorem Function.FactorsThrough.factor_apply {A : Sort u_5} {B : Sort u_6} {C : Sort u_7} {f : A → B} {g : A → C} (h : FactorsThrough g f) (hf : Surjective f) (a : A) :
theorem Function.FactorsThrough.factor_comp {A : Sort u_5} {B : Sort u_6} {C : Sort u_7} {f : A → B} {g : A → C} (h : FactorsThrough g f) (hf : Surjective f) :
The factor function solves the factorization equation.
theorem Function.FactorsThrough.factor_eq_iff {A : Sort u_5} {B : Sort u_6} {C : Sort u_7} {f : A → B} {g : A → C} (h : FactorsThrough g f) (hf : Surjective f) (d : B → C) :
Surjectivity makes the factorization unique.
theorem Function.FactorsThrough.range_factor {A : Sort u_5} {B : Sort u_6} {f : A → B} {C' : Type u_9} {g : A → C'} (h : FactorsThrough g f) (hf : Surjective f) :
A factor has exactly the same range as the original function.
theorem Function.FactorsThrough.surjective_factor_iff {A : Sort u_5} {B : Sort u_6} {C : Sort u_7} {f : A → B} {g : A → C} (h : FactorsThrough g f) (hf : Surjective f) :
Factoring preserves surjectivity, also for Sort-valued functions.
theorem Function.FactorsThrough.injective_factor_iff {A : Sort u_5} {B : Sort u_6} {C : Sort u_7} {f : A → B} {g : A → C} (h : FactorsThrough g f) (hf : Surjective f) :
The factor is injective exactly when no additional fibers were identified.
@[simp]
theorem Function.Surjective.factor_self {A : Sort u_5} {B : Sort u_6} {f : A → B} (hf : Surjective f) :
theorem Function.FactorsThrough.factor_trans {A : Sort u_5} {B : Sort u_6} {C : Sort u_7} {D : Sort u_8} {f : A → B} {g : A → C} {k : A → D} (hk : FactorsThrough k g) (hf : Surjective f) (hgSurj : Surjective g) :
Factorization through an intermediate quotient agrees with direct factorization.
theorem Function.Surjective.factor_comp_eq_iff {A : Sort u_5} {B : Sort u_6} {C : Sort u_7} {f : A → B} (hf : Surjective f) (g : A → C) :
The constructed function solves the factorization equation exactly when g respects fibers.