Sets in product and pi types #
This file proves basic properties of product of sets in α × β
and in Π i, α i
, and of the
diagonal of a type.
Main declarations #
This file contains basic results on the following notions, which are defined in Set.Operations
.
Set.prod
: Binary product of sets. Fors : Set α
,t : Set β
, we haves.prod t : Set (α × β)
. Denoted bys ×ˢ t
.Set.diagonal
: Diagonal of a type.Set.diagonal α = {(x, x) | x : α}
.Set.offDiag
: Off-diagonal.s ×ˢ s
without the diagonal.Set.pi
: Arbitrary product of sets.
Cartesian binary product of sets #
theorem
Set.Subsingleton.prod
{α : Type u_1}
{β : Type u_2}
{s : Set α}
{t : Set β}
(hs : s.Subsingleton)
(ht : t.Subsingleton)
:
(s ×ˢ t).Subsingleton
noncomputable instance
Set.decidableMemProd
{α : Type u_1}
{β : Type u_2}
{s : Set α}
{t : Set β}
[DecidablePred fun (x : α) => x ∈ s]
[DecidablePred fun (x : β) => x ∈ t]
:
DecidablePred fun (x : α × β) => x ∈ s ×ˢ t
Equations
- Set.decidableMemProd x = inferInstanceAs (Decidable (x.1 ∈ s ∧ x.2 ∈ t))
theorem
MonotoneOn.set_prod
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{s : Set α}
[Preorder α]
{f : α → Set β}
{g : α → Set γ}
(hf : MonotoneOn f s)
(hg : MonotoneOn g s)
:
MonotoneOn (fun (x : α) => f x ×ˢ g x) s
theorem
AntitoneOn.set_prod
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{s : Set α}
[Preorder α]
{f : α → Set β}
{g : α → Set γ}
(hf : AntitoneOn f s)
(hg : AntitoneOn g s)
:
AntitoneOn (fun (x : α) => f x ×ˢ g x) s
Diagonal #
In this section we prove some lemmas about the diagonal set {p | p.1 = p.2}
and the diagonal map
fun x ↦ (x, x)
.
Equations
- Set.decidableMemDiagonal x = h x.1 x.2
A function is Function.const α a
for some a
if and only if ∀ x y, f x = f y
.
@[reducible, inline]
The fiber product
Equations
Instances For
theorem
Function.pullback_comm_sq
{X : Type u_2}
{Y : Sort u_3}
{Z : Type u_1}
(f : X → Y)
(g : Z → Y)
:
@[simp]
def
Function.mapPullback
{X₁ : Type u_1}
{X₂ : Type u_2}
{Y₁ : Sort u_3}
{Y₂ : Sort u_4}
{Z₁ : Type u_5}
{Z₂ : Type u_6}
{f₁ : X₁ → Y₁}
{g₁ : Z₁ → Y₁}
{f₂ : X₂ → Y₂}
{g₂ : Z₂ → Y₂}
(mapX : X₁ → X₂)
(mapY : Y₁ → Y₂)
(mapZ : Z₁ → Z₂)
(commX : f₂ ∘ mapX = mapY ∘ f₁)
(commZ : g₂ ∘ mapZ = mapY ∘ g₁)
(p : Pullback f₁ g₁)
:
Pullback f₂ g₂
Three functions between the three pairs of spaces
Instances For
def
Function.PullbackSelf.map_fst
{X : Type u_1}
{Y : Sort u_2}
{Z : Type u_3}
{f : X → Y}
{g : Z → Y}
:
The projection
Equations
Instances For
def
Function.PullbackSelf.map_snd
{X : Type u_1}
{Y : Sort u_2}
{Z : Type u_3}
{f : X → Y}
{g : Z → Y}
:
The projection
Equations
Instances For
theorem
preimage_map_fst_pullbackDiagonal
{X : Type u_2}
{Y : Sort u_3}
{Z : Type u_1}
{f : X → Y}
{g : Z → Y}
:
theorem
Function.Injective.preimage_pullbackDiagonal
{X : Type u_2}
{Y : Sort u_3}
{Z : Type u_1}
{f : X → Y}
{g : Z → X}
(inj : Injective g)
:
@[simp]
@[simp]
theorem
Set.Nontrivial.offDiag_nonempty
{α : Type u_1}
{s : Set α}
:
s.Nontrivial → s.offDiag.Nonempty
Alias of the reverse direction of Set.offDiag_nonempty
.
theorem
Set.Subsingleton.offDiag_eq_empty
{α : Type u_1}
{s : Set α}
:
s.Nontrivial → s.offDiag.Nonempty
Alias of the reverse direction of Set.offDiag_nonempty
.
Cartesian set-indexed product of sets #
theorem
Set.subsingleton_univ_pi
{ι : Type u_1}
{α : ι → Type u_2}
{t : (i : ι) → Set (α i)}
(ht : ∀ (i : ι), (t i).Subsingleton)
:
(univ.pi t).Subsingleton
theorem
Set.pi_update_of_not_mem
{ι : Type u_1}
{α : ι → Type u_2}
{β : ι → Type u_3}
{s : Set ι}
{i : ι}
[DecidableEq ι]
(hi : i ∉ s)
(f : (j : ι) → α j)
(a : α i)
(t : (j : ι) → α j → Set (β j))
:
theorem
Set.pi_update_of_mem
{ι : Type u_1}
{α : ι → Type u_2}
{β : ι → Type u_3}
{s : Set ι}
{i : ι}
[DecidableEq ι]
(hi : i ∈ s)
(f : (j : ι) → α j)
(a : α i)
(t : (j : ι) → α j → Set (β j))
:
theorem
Set.univ_pi_update_univ
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
(i : ι)
(s : Set (α i))
:
theorem
Set.eval_image_univ_pi_subset
{ι : Type u_1}
{α : ι → Type u_2}
{t : (i : ι) → Set (α i)}
{i : ι}
:
@[deprecated Set.piMap_image_pi (since := "2024-10-06")]
theorem
Set.dcomp_image_pi
{ι : Type u_1}
{α : ι → Type u_2}
{β : ι → Type u_3}
{s : Set ι}
{f : (i : ι) → α i → β i}
(hf : ∀ i ∉ s, Function.Surjective (f i))
(t : (i : ι) → Set (α i))
:
Alias of Set.piMap_image_pi
.
theorem
Set.eval_preimage
{ι : Type u_1}
{α : ι → Type u_2}
{i : ι}
[DecidableEq ι]
{s : Set (α i)}
:
theorem
Set.eval_preimage'
{ι : Type u_1}
{α : ι → Type u_2}
{i : ι}
[DecidableEq ι]
{s : Set (α i)}
:
theorem
Set.update_preimage_pi
{ι : Type u_1}
{α : ι → Type u_2}
{s : Set ι}
{t : (i : ι) → Set (α i)}
{i : ι}
[DecidableEq ι]
{f : (i : ι) → α i}
(hi : i ∈ s)
(hf : ∀ j ∈ s, j ≠ i → f j ∈ t j)
:
theorem
Set.update_image
{ι : Type u_1}
{β : ι → Type u_3}
[DecidableEq ι]
(x : (i : ι) → β i)
(i : ι)
(s : Set (β i))
:
theorem
Set.update_preimage_univ_pi
{ι : Type u_1}
{α : ι → Type u_2}
{t : (i : ι) → Set (α i)}
{i : ι}
[DecidableEq ι]
{f : (i : ι) → α i}
(hf : ∀ (j : ι), j ≠ i → f j ∈ t j)
:
theorem
Set.subset_pi_eval_image
{ι : Type u_1}
{α : ι → Type u_2}
(s : Set ι)
(u : Set ((i : ι) → α i))
: