Sets in product and pi types #
This file defines the product of sets in α × β
and in Π i, α i
along with the diagonal of a
type.
Main declarations #
set.prod
: Binary product of sets. Fors : set α
,t : set β
, we haves.prod t : set (α × β)
.set.diagonal
: Diagonal of a type.set.diagonal α = {(x, x) | x : α}
.set.pi
: Arbitrary product of sets.
@[class]
structure
has_set_prod
(α : Type u_1)
(β : Type u_2)
(γ : out_param (Type u_3)) :
Type (max u_1 u_2 u_3)
- prod : α → β → γ
Notation class for product of subobjects (sets, submonoids, subgroups, etc).
Instances
Cartesian binary product of sets #
@[protected, instance]
The cartesian product prod s t
is the set of (a, b)
such that a ∈ s
and b ∈ t
.
Diagonal #
diagonal α
is the set of α × α
consisting of all pairs of the form (a, a)
.
Cartesian set-indexed product of sets #
@[simp]
theorem
set.singleton_pi
{ι : Type u_1}
{α : ι → Type u_2}
(i : ι)
(t : Π (i : ι), set (α i)) :
{i}.pi t = function.eval i ⁻¹' t i
theorem
set.pi_update_of_not_mem
{ι : Type u_1}
{α : ι → Type u_2}
{β : ι → Type u_3}
{s : set ι}
{i : ι}
[decidable_eq ι]
(hi : i ∉ s)
(f : Π (j : ι), α j)
(a : α i)
(t : Π (j : ι), α j → set (β j)) :
s.pi (λ (j : ι), t j (function.update f i a j)) = s.pi (λ (j : ι), t j (f j))
theorem
set.pi_update_of_mem
{ι : Type u_1}
{α : ι → Type u_2}
{β : ι → Type u_3}
{s : set ι}
{i : ι}
[decidable_eq ι]
(hi : i ∈ s)
(f : Π (j : ι), α j)
(a : α i)
(t : Π (j : ι), α j → set (β j)) :
theorem
set.univ_pi_update
{ι : Type u_1}
{α : ι → Type u_2}
[decidable_eq ι]
{β : ι → Type u_3}
(i : ι)
(f : Π (j : ι), α j)
(a : α i)
(t : Π (j : ι), α j → set (β j)) :
theorem
set.univ_pi_update_univ
{ι : Type u_1}
{α : ι → Type u_2}
[decidable_eq ι]
(i : ι)
(s : set (α i)) :
set.univ.pi (function.update (λ (j : ι), set.univ) i s) = function.eval i ⁻¹' s
theorem
set.eval_preimage
{ι : Type u_1}
{α : ι → Type u_2}
{i : ι}
[decidable_eq ι]
{s : set (α i)} :
function.eval i ⁻¹' s = set.univ.pi (function.update (λ (i : ι), set.univ) i s)
theorem
set.eval_preimage'
{ι : Type u_1}
{α : ι → Type u_2}
{i : ι}
[decidable_eq ι]
{s : set (α i)} :
function.eval i ⁻¹' s = {i}.pi (function.update (λ (i : ι), set.univ) i s)
theorem
set.update_preimage_pi
{ι : Type u_1}
{α : ι → Type u_2}
{s : set ι}
{t : Π (i : ι), set (α i)}
{i : ι}
[decidable_eq ι]
{f : Π (i : ι), α i}
(hi : i ∈ s)
(hf : ∀ (j : ι), j ∈ s → j ≠ i → f j ∈ t j) :
function.update f i ⁻¹' s.pi t = t i
theorem
set.update_preimage_univ_pi
{ι : Type u_1}
{α : ι → Type u_2}
{t : Π (i : ι), set (α i)}
{i : ι}
[decidable_eq ι]
{f : Π (i : ι), α i}
(hf : ∀ (j : ι), j ≠ i → f j ∈ t j) :
function.update f i ⁻¹' set.univ.pi t = t i
theorem
set.subset_pi_eval_image
{ι : Type u_1}
{α : ι → Type u_2}
(s : set ι)
(u : set (Π (i : ι), α i)) :
u ⊆ s.pi (λ (i : ι), function.eval i '' u)