File: Mathlib/Order/Interval/Set/Pi.lean

full_name: Set.pi_univ_Ici
code: @[simp]
theorem pi_univ_Ici : (pi univ fun i ↦ Ici (x i)) = Ici x 
goal: (Set.univ.pi fun i => Set.Ici (x i)) = Set.Ici x

full_name: Set.pi_univ_Iic
code: @[simp]
theorem pi_univ_Iic : (pi univ fun i ↦ Iic (x i)) = Iic x 
goal: (Set.univ.pi fun i => Set.Iic (x i)) = Set.Iic x

full_name: Set.pi_univ_Icc
code: @[simp]
theorem pi_univ_Icc : (pi univ fun i ↦ Icc (x i) (y i)) = Icc x y 
goal: (Set.univ.pi fun i => Set.Icc (x i) (y i)) = Set.Icc x y

full_name: Set.piecewise_mem_Icc
code: theorem piecewise_mem_Icc {s : Set ι} [∀ j, Decidable (j ∈ s)] {f₁ f₂ g₁ g₂ : ∀ i, α i}
    (h₁ : ∀ i ∈ s, f₁ i ∈ Icc (g₁ i) (g₂ i)) (h₂ : ∀ i ∉ s, f₂ i ∈ Icc (g₁ i) (g₂ i)) :
    s.piecewise f₁ f₂ ∈ Icc g₁ g₂ 
goal: s.piecewise f₁ f₂ ∈ Set.Icc g₁ g₂

full_name: Set.piecewise_mem_Icc'
code: theorem piecewise_mem_Icc' {s : Set ι} [∀ j, Decidable (j ∈ s)] {f₁ f₂ g₁ g₂ : ∀ i, α i}
    (h₁ : f₁ ∈ Icc g₁ g₂) (h₂ : f₂ ∈ Icc g₁ g₂) : s.piecewise f₁ f₂ ∈ Icc g₁ g₂ 
goal: s.piecewise f₁ f₂ ∈ Set.Icc g₁ g₂

full_name: Set.pi_univ_Ioi_subset
code: theorem pi_univ_Ioi_subset [Nonempty ι]: (pi univ fun i ↦ Ioi (x i)) ⊆ Ioi x 
goal: (Set.univ.pi fun i => Set.Ioi (x i)) ⊆ Set.Ioi x

full_name: Set.pi_univ_Iio_subset
code: theorem pi_univ_Iio_subset [Nonempty ι]: (pi univ fun i ↦ Iio (x i)) ⊆ Iio x 
goal: (Set.univ.pi fun i => Set.Iio (x i)) ⊆ Set.Iio x

full_name: Set.pi_univ_Ioo_subset
code: theorem pi_univ_Ioo_subset [Nonempty ι]: (pi univ fun i ↦ Ioo (x i) (y i)) ⊆ Ioo x y 
goal: (Set.univ.pi fun i => Set.Ioo (x i) (y i)) ⊆ Set.Ioo x y

full_name: Set.pi_univ_Ioc_subset
code: theorem pi_univ_Ioc_subset [Nonempty ι]: (pi univ fun i ↦ Ioc (x i) (y i)) ⊆ Ioc x y 
goal: (Set.univ.pi fun i => Set.Ioc (x i) (y i)) ⊆ Set.Ioc x y

full_name: Set.pi_univ_Ico_subset
code: theorem pi_univ_Ico_subset [Nonempty ι]: (pi univ fun i ↦ Ico (x i) (y i)) ⊆ Ico x y 
goal: (Set.univ.pi fun i => Set.Ico (x i) (y i)) ⊆ Set.Ico x y

full_name: Set.pi_univ_Ioc_update_left
code: theorem pi_univ_Ioc_update_left {x y : ∀ i, α i} {i₀ : ι} {m : α i₀} (hm : x i₀ ≤ m) :
    (pi univ fun i ↦ Ioc (update x i₀ m i) (y i)) =
      { z | m < z i₀ } ∩ pi univ fun i ↦ Ioc (x i) (y i) 
goal: (Set.univ.pi fun i => Set.Ioc (Function.update x i₀ m i) (y i)) =
  {z | m < z i₀} ∩ Set.univ.pi fun i => Set.Ioc (x i) (y i)

full_name: Set.pi_univ_Ioc_update_right
code: theorem pi_univ_Ioc_update_right {x y : ∀ i, α i} {i₀ : ι} {m : α i₀} (hm : m ≤ y i₀) :
    (pi univ fun i ↦ Ioc (x i) (update y i₀ m i)) =
      { z | z i₀ ≤ m } ∩ pi univ fun i ↦ Ioc (x i) (y i) 
goal: (Set.univ.pi fun i => Set.Ioc (x i) (Function.update y i₀ m i)) =
  {z | z i₀ ≤ m} ∩ Set.univ.pi fun i => Set.Ioc (x i) (y i)

full_name: Set.disjoint_pi_univ_Ioc_update_left_right
code: theorem disjoint_pi_univ_Ioc_update_left_right {x y : ∀ i, α i} {i₀ : ι} {m : α i₀} :
    Disjoint (pi univ fun i ↦ Ioc (x i) (update y i₀ m i))
    (pi univ fun i ↦ Ioc (update x i₀ m i) (y i)) 
goal: Disjoint (Set.univ.pi fun i => Set.Ioc (x i) (Function.update y i₀ m i))
  (Set.univ.pi fun i => Set.Ioc (Function.update x i₀ m i) (y i))

full_name: Set.image_update_Icc
code: theorem image_update_Icc (f : ∀ i, α i) (i : ι) (a b : α i) :
    update f i '' Icc a b = Icc (update f i a) (update f i b) 
goal: Function.update f i '' Set.Icc a b = Set.Icc (Function.update f i a) (Function.update f i b)

full_name: Set.image_update_Ico
code: theorem image_update_Ico (f : ∀ i, α i) (i : ι) (a b : α i) :
    update f i '' Ico a b = Ico (update f i a) (update f i b) 
goal: Function.update f i '' Set.Ico a b = Set.Ico (Function.update f i a) (Function.update f i b)

full_name: Set.image_update_Ioc
code: theorem image_update_Ioc (f : ∀ i, α i) (i : ι) (a b : α i) :
    update f i '' Ioc a b = Ioc (update f i a) (update f i b) 
goal: Function.update f i '' Set.Ioc a b = Set.Ioc (Function.update f i a) (Function.update f i b)

full_name: Set.image_update_Ioo
code: theorem image_update_Ioo (f : ∀ i, α i) (i : ι) (a b : α i) :
    update f i '' Ioo a b = Ioo (update f i a) (update f i b) 
goal: Function.update f i '' Set.Ioo a b = Set.Ioo (Function.update f i a) (Function.update f i b)

full_name: Set.image_update_Icc_left
code: theorem image_update_Icc_left (f : ∀ i, α i) (i : ι) (a : α i) :
    update f i '' Icc a (f i) = Icc (update f i a) f 
goal: Function.update f i '' Set.Icc a (f i) = Set.Icc (Function.update f i a) f

full_name: Set.image_update_Ico_left
code: theorem image_update_Ico_left (f : ∀ i, α i) (i : ι) (a : α i) :
    update f i '' Ico a (f i) = Ico (update f i a) f 
goal: Function.update f i '' Set.Ico a (f i) = Set.Ico (Function.update f i a) f

full_name: Set.image_update_Ioc_left
code: theorem image_update_Ioc_left (f : ∀ i, α i) (i : ι) (a : α i) :
    update f i '' Ioc a (f i) = Ioc (update f i a) f 
goal: Function.update f i '' Set.Ioc a (f i) = Set.Ioc (Function.update f i a) f

full_name: Set.image_update_Ioo_left
code: theorem image_update_Ioo_left (f : ∀ i, α i) (i : ι) (a : α i) :
    update f i '' Ioo a (f i) = Ioo (update f i a) f 
goal: Function.update f i '' Set.Ioo a (f i) = Set.Ioo (Function.update f i a) f

full_name: Set.image_update_Icc_right
code: theorem image_update_Icc_right (f : ∀ i, α i) (i : ι) (b : α i) :
    update f i '' Icc (f i) b = Icc f (update f i b) 
goal: Function.update f i '' Set.Icc (f i) b = Set.Icc f (Function.update f i b)

full_name: Set.image_update_Ico_right
code: theorem image_update_Ico_right (f : ∀ i, α i) (i : ι) (b : α i) :
    update f i '' Ico (f i) b = Ico f (update f i b) 
goal: Function.update f i '' Set.Ico (f i) b = Set.Ico f (Function.update f i b)

full_name: Set.image_update_Ioc_right
code: theorem image_update_Ioc_right (f : ∀ i, α i) (i : ι) (b : α i) :
    update f i '' Ioc (f i) b = Ioc f (update f i b) 
goal: Function.update f i '' Set.Ioc (f i) b = Set.Ioc f (Function.update f i b)

full_name: Set.image_update_Ioo_right
code: theorem image_update_Ioo_right (f : ∀ i, α i) (i : ι) (b : α i) :
    update f i '' Ioo (f i) b = Ioo f (update f i b) 
goal: Function.update f i '' Set.Ioo (f i) b = Set.Ioo f (Function.update f i b)

full_name: Set.image_mulSingle_Icc
code: @[to_additive]
theorem image_mulSingle_Icc (i : ι) (a b : α i) :
    Pi.mulSingle i '' Icc a b = Icc (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.Icc a b = Set.Icc (Pi.mulSingle i a) (Pi.mulSingle i b)

full_name: Set.image_single_Icc
code: @[to_additive]
theorem image_mulSingle_Icc (i : ι) (a b : α i) :
    Pi.mulSingle i '' Icc a b = Icc (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.single i '' Set.Icc a b = Set.Icc (Pi.single i a) (Pi.single i b)

full_name: Set.image_single_Ico
code: @[to_additive]
theorem image_mulSingle_Ico (i : ι) (a b : α i) :
    Pi.mulSingle i '' Ico a b = Ico (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.single i '' Set.Ico a b = Set.Ico (Pi.single i a) (Pi.single i b)

full_name: Set.image_mulSingle_Ico
code: @[to_additive]
theorem image_mulSingle_Ico (i : ι) (a b : α i) :
    Pi.mulSingle i '' Ico a b = Ico (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.Ico a b = Set.Ico (Pi.mulSingle i a) (Pi.mulSingle i b)

full_name: Set.image_mulSingle_Ioc
code: @[to_additive]
theorem image_mulSingle_Ioc (i : ι) (a b : α i) :
    Pi.mulSingle i '' Ioc a b = Ioc (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.Ioc a b = Set.Ioc (Pi.mulSingle i a) (Pi.mulSingle i b)

full_name: Set.image_single_Ioc
code: @[to_additive]
theorem image_mulSingle_Ioc (i : ι) (a b : α i) :
    Pi.mulSingle i '' Ioc a b = Ioc (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.single i '' Set.Ioc a b = Set.Ioc (Pi.single i a) (Pi.single i b)

full_name: Set.image_single_Ioo
code: @[to_additive]
theorem image_mulSingle_Ioo (i : ι) (a b : α i) :
    Pi.mulSingle i '' Ioo a b = Ioo (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.single i '' Set.Ioo a b = Set.Ioo (Pi.single i a) (Pi.single i b)

full_name: Set.image_mulSingle_Ioo
code: @[to_additive]
theorem image_mulSingle_Ioo (i : ι) (a b : α i) :
    Pi.mulSingle i '' Ioo a b = Ioo (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.Ioo a b = Set.Ioo (Pi.mulSingle i a) (Pi.mulSingle i b)

full_name: Set.image_mulSingle_Icc_left
code: @[to_additive]
theorem image_mulSingle_Icc_left (i : ι) (a : α i) :
    Pi.mulSingle i '' Icc a 1 = Icc (Pi.mulSingle i a) 1 
goal: Pi.mulSingle i '' Set.Icc a 1 = Set.Icc (Pi.mulSingle i a) 1

full_name: Set.image_single_Icc_left
code: @[to_additive]
theorem image_mulSingle_Icc_left (i : ι) (a : α i) :
    Pi.mulSingle i '' Icc a 1 = Icc (Pi.mulSingle i a) 1 
goal: Pi.single i '' Set.Icc a 0 = Set.Icc (Pi.single i a) 0

full_name: Set.image_mulSingle_Ico_left
code: @[to_additive]
theorem image_mulSingle_Ico_left (i : ι) (a : α i) :
    Pi.mulSingle i '' Ico a 1 = Ico (Pi.mulSingle i a) 1 
goal: Pi.mulSingle i '' Set.Ico a 1 = Set.Ico (Pi.mulSingle i a) 1

full_name: Set.image_single_Ico_left
code: @[to_additive]
theorem image_mulSingle_Ico_left (i : ι) (a : α i) :
    Pi.mulSingle i '' Ico a 1 = Ico (Pi.mulSingle i a) 1 
goal: Pi.single i '' Set.Ico a 0 = Set.Ico (Pi.single i a) 0

full_name: Set.image_single_Ioc_left
code: @[to_additive]
theorem image_mulSingle_Ioc_left (i : ι) (a : α i) :
    Pi.mulSingle i '' Ioc a 1 = Ioc (Pi.mulSingle i a) 1 
goal: Pi.single i '' Set.Ioc a 0 = Set.Ioc (Pi.single i a) 0

full_name: Set.image_mulSingle_Ioc_left
code: @[to_additive]
theorem image_mulSingle_Ioc_left (i : ι) (a : α i) :
    Pi.mulSingle i '' Ioc a 1 = Ioc (Pi.mulSingle i a) 1 
goal: Pi.mulSingle i '' Set.Ioc a 1 = Set.Ioc (Pi.mulSingle i a) 1

full_name: Set.image_mulSingle_Ioo_left
code: @[to_additive]
theorem image_mulSingle_Ioo_left (i : ι) (a : α i) :
    Pi.mulSingle i '' Ioo a 1 = Ioo (Pi.mulSingle i a) 1 
goal: Pi.mulSingle i '' Set.Ioo a 1 = Set.Ioo (Pi.mulSingle i a) 1

full_name: Set.image_single_Ioo_left
code: @[to_additive]
theorem image_mulSingle_Ioo_left (i : ι) (a : α i) :
    Pi.mulSingle i '' Ioo a 1 = Ioo (Pi.mulSingle i a) 1 
goal: Pi.single i '' Set.Ioo a 0 = Set.Ioo (Pi.single i a) 0

full_name: Set.image_mulSingle_Icc_right
code: @[to_additive]
theorem image_mulSingle_Icc_right (i : ι) (b : α i) :
    Pi.mulSingle i '' Icc 1 b = Icc 1 (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.Icc 1 b = Set.Icc 1 (Pi.mulSingle i b)

full_name: Set.image_single_Icc_right
code: @[to_additive]
theorem image_mulSingle_Icc_right (i : ι) (b : α i) :
    Pi.mulSingle i '' Icc 1 b = Icc 1 (Pi.mulSingle i b) 
goal: Pi.single i '' Set.Icc 0 b = Set.Icc 0 (Pi.single i b)

full_name: Set.image_mulSingle_Ico_right
code: @[to_additive]
theorem image_mulSingle_Ico_right (i : ι) (b : α i) :
    Pi.mulSingle i '' Ico 1 b = Ico 1 (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.Ico 1 b = Set.Ico 1 (Pi.mulSingle i b)

full_name: Set.image_single_Ico_right
code: @[to_additive]
theorem image_mulSingle_Ico_right (i : ι) (b : α i) :
    Pi.mulSingle i '' Ico 1 b = Ico 1 (Pi.mulSingle i b) 
goal: Pi.single i '' Set.Ico 0 b = Set.Ico 0 (Pi.single i b)

full_name: Set.image_mulSingle_Ioc_right
code: @[to_additive]
theorem image_mulSingle_Ioc_right (i : ι) (b : α i) :
    Pi.mulSingle i '' Ioc 1 b = Ioc 1 (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.Ioc 1 b = Set.Ioc 1 (Pi.mulSingle i b)

full_name: Set.image_single_Ioc_right
code: @[to_additive]
theorem image_mulSingle_Ioc_right (i : ι) (b : α i) :
    Pi.mulSingle i '' Ioc 1 b = Ioc 1 (Pi.mulSingle i b) 
goal: Pi.single i '' Set.Ioc 0 b = Set.Ioc 0 (Pi.single i b)

full_name: Set.image_mulSingle_Ioo_right
code: @[to_additive]
theorem image_mulSingle_Ioo_right (i : ι) (b : α i) :
    Pi.mulSingle i '' Ioo 1 b = Ioo 1 (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.Ioo 1 b = Set.Ioo 1 (Pi.mulSingle i b)

full_name: Set.image_single_Ioo_right
code: @[to_additive]
theorem image_mulSingle_Ioo_right (i : ι) (b : α i) :
    Pi.mulSingle i '' Ioo 1 b = Ioo 1 (Pi.mulSingle i b) 
goal: Pi.single i '' Set.Ioo 0 b = Set.Ioo 0 (Pi.single i b)

full_name: Set.pi_univ_uIcc
code: @[simp]
theorem pi_univ_uIcc (a b : ∀ i, α i) : (pi univ fun i => uIcc (a i) (b i)) = uIcc a b 
goal: (Set.univ.pi fun i => Set.uIcc (a i) (b i)) = Set.uIcc a b

full_name: Set.image_update_uIcc
code: theorem image_update_uIcc (f : ∀ i, α i) (i : ι) (a b : α i) :
    update f i '' uIcc a b = uIcc (update f i a) (update f i b) 
goal: Function.update f i '' Set.uIcc a b = Set.uIcc (Function.update f i a) (Function.update f i b)

full_name: Set.image_update_uIcc_left
code: theorem image_update_uIcc_left (f : ∀ i, α i) (i : ι) (a : α i) :
    update f i '' uIcc a (f i) = uIcc (update f i a) f 
goal: Function.update f i '' Set.uIcc a (f i) = Set.uIcc (Function.update f i a) f

full_name: Set.image_update_uIcc_right
code: theorem image_update_uIcc_right (f : ∀ i, α i) (i : ι) (b : α i) :
    update f i '' uIcc (f i) b = uIcc f (update f i b) 
goal: Function.update f i '' Set.uIcc (f i) b = Set.uIcc f (Function.update f i b)

full_name: Set.image_single_uIcc
code: @[to_additive]
theorem image_mulSingle_uIcc (i : ι) (a b : α i) :
    Pi.mulSingle i '' uIcc a b = uIcc (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.single i '' Set.uIcc a b = Set.uIcc (Pi.single i a) (Pi.single i b)

full_name: Set.image_mulSingle_uIcc
code: @[to_additive]
theorem image_mulSingle_uIcc (i : ι) (a b : α i) :
    Pi.mulSingle i '' uIcc a b = uIcc (Pi.mulSingle i a) (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.uIcc a b = Set.uIcc (Pi.mulSingle i a) (Pi.mulSingle i b)

full_name: Set.image_mulSingle_uIcc_left
code: @[to_additive]
theorem image_mulSingle_uIcc_left (i : ι) (a : α i) :
    Pi.mulSingle i '' uIcc a 1 = uIcc (Pi.mulSingle i a) 1 
goal: Pi.mulSingle i '' Set.uIcc a 1 = Set.uIcc (Pi.mulSingle i a) 1

full_name: Set.image_single_uIcc_left
code: @[to_additive]
theorem image_mulSingle_uIcc_left (i : ι) (a : α i) :
    Pi.mulSingle i '' uIcc a 1 = uIcc (Pi.mulSingle i a) 1 
goal: Pi.single i '' Set.uIcc a 0 = Set.uIcc (Pi.single i a) 0

full_name: Set.image_mulSingle_uIcc_right
code: @[to_additive]
theorem image_mulSingle_uIcc_right (i : ι) (b : α i) :
    Pi.mulSingle i '' uIcc 1 b = uIcc 1 (Pi.mulSingle i b) 
goal: Pi.mulSingle i '' Set.uIcc 1 b = Set.uIcc 1 (Pi.mulSingle i b)

full_name: Set.image_single_uIcc_right
code: @[to_additive]
theorem image_mulSingle_uIcc_right (i : ι) (b : α i) :
    Pi.mulSingle i '' uIcc 1 b = uIcc 1 (Pi.mulSingle i b) 
goal: Pi.single i '' Set.uIcc 0 b = Set.uIcc 0 (Pi.single i b)

full_name: Set.pi_univ_Ioc_update_union
code: theorem pi_univ_Ioc_update_union (x y : ∀ i, α i) (i₀ : ι) (m : α i₀) (hm : m ∈ Icc (x i₀) (y i₀)) :
    ((pi univ fun i ↦ Ioc (x i) (update y i₀ m i)) ∪
        pi univ fun i ↦ Ioc (update x i₀ m i) (y i)) =
      pi univ fun i ↦ Ioc (x i) (y i) 
goal: ((Set.univ.pi fun i => Set.Ioc (x i) (Function.update y i₀ m i)) ∪
    Set.univ.pi fun i => Set.Ioc (Function.update x i₀ m i) (y i)) =
  Set.univ.pi fun i => Set.Ioc (x i) (y i)

full_name: Set.Icc_diff_pi_univ_Ioo_subset
code: /-- If `x`, `y`, `x'`, and `y'` are functions `Π i : ι, α i`, then
the set difference between the box `[x, y]` and the product of the open intervals `(x' i, y' i)`
is covered by the union of the following boxes: for each `i : ι`, we take
`[x, update y i (x' i)]` and `[update x i (y' i), y]`.

E.g., if `x' = x` and `y' = y`, then this lemma states that the difference between a closed box
`[x, y]` and the corresponding open box `{z | ∀ i, x i < z i < y i}` is covered by the union
of the faces of `[x, y]`. -/
theorem Icc_diff_pi_univ_Ioo_subset (x y x' y' : ∀ i, α i) :
    (Icc x y \ pi univ fun i ↦ Ioo (x' i) (y' i)) ⊆
    (⋃ i : ι, Icc x (update y i (x' i))) ∪ ⋃ i : ι, Icc (update x i (y' i)) y 
goal: (Set.Icc x y \ Set.univ.pi fun i => Set.Ioo (x' i) (y' i)) ⊆
  (⋃ i, Set.Icc x (Function.update y i (x' i))) ∪ ⋃ i, Set.Icc (Function.update x i (y' i)) y

full_name: Set.Icc_diff_pi_univ_Ioc_subset
code: /-- If `x`, `y`, `z` are functions `Π i : ι, α i`, then
the set difference between the box `[x, z]` and the product of the intervals `(y i, z i]`
is covered by the union of the boxes `[x, update z i (y i)]`.

E.g., if `x = y`, then this lemma states that the difference between a closed box
`[x, y]` and the product of half-open intervals `{z | ∀ i, x i < z i ≤ y i}` is covered by the union
of the faces of `[x, y]` adjacent to `x`. -/
theorem Icc_diff_pi_univ_Ioc_subset (x y z : ∀ i, α i) :
    (Icc x z \ pi univ fun i ↦ Ioc (y i) (z i)) ⊆ ⋃ i : ι, Icc x (update z i (y i)) 
goal: (Set.Icc x z \ Set.univ.pi fun i => Set.Ioc (y i) (z i)) ⊆ ⋃ i, Set.Icc x (Function.update z i (y i))