File: Mathlib/Topology/Semicontinuous.lean

full_name: LowerSemicontinuousWithinAt
code: /-- A real function `f` is lower semicontinuous at `x` within a set `s` if, for any `ε > 0`, for all
`x'` close enough to `x` in `s`, then `f x'` is at least `f x - ε`. We formulate this in a general
preordered space, using an arbitrary `y < f x` instead of `f x - ε`. -/
def LowerSemicontinuousWithinAt (f : α → β) (s : Set α) (x : α) 
goal: Prop

full_name: LowerSemicontinuousOn
code: /-- A real function `f` is lower semicontinuous on a set `s` if, for any `ε > 0`, for any `x ∈ s`,
for all `x'` close enough to `x` in `s`, then `f x'` is at least `f x - ε`. We formulate this in
a general preordered space, using an arbitrary `y < f x` instead of `f x - ε`. -/
def LowerSemicontinuousOn (f : α → β) (s : Set α) 
goal: Prop

full_name: LowerSemicontinuousAt
code: /-- A real function `f` is lower semicontinuous at `x` if, for any `ε > 0`, for all `x'` close
enough to `x`, then `f x'` is at least `f x - ε`. We formulate this in a general preordered space,
using an arbitrary `y < f x` instead of `f x - ε`. -/
def LowerSemicontinuousAt (f : α → β) (x : α) 
goal: Prop

full_name: LowerSemicontinuous
code: /-- A real function `f` is lower semicontinuous if, for any `ε > 0`, for any `x`, for all `x'` close
enough to `x`, then `f x'` is at least `f x - ε`. We formulate this in a general preordered space,
using an arbitrary `y < f x` instead of `f x - ε`. -/
def LowerSemicontinuous (f : α → β) 
goal: Prop

full_name: UpperSemicontinuousWithinAt
code: /-- A real function `f` is upper semicontinuous at `x` within a set `s` if, for any `ε > 0`, for all
`x'` close enough to `x` in `s`, then `f x'` is at most `f x + ε`. We formulate this in a general
preordered space, using an arbitrary `y > f x` instead of `f x + ε`. -/
def UpperSemicontinuousWithinAt (f : α → β) (s : Set α) (x : α) 
goal: Prop

full_name: UpperSemicontinuousOn
code: /-- A real function `f` is upper semicontinuous on a set `s` if, for any `ε > 0`, for any `x ∈ s`,
for all `x'` close enough to `x` in `s`, then `f x'` is at most `f x + ε`. We formulate this in a
general preordered space, using an arbitrary `y > f x` instead of `f x + ε`. -/
def UpperSemicontinuousOn (f : α → β) (s : Set α) 
goal: Prop

full_name: UpperSemicontinuousAt
code: /-- A real function `f` is upper semicontinuous at `x` if, for any `ε > 0`, for all `x'` close
enough to `x`, then `f x'` is at most `f x + ε`. We formulate this in a general preordered space,
using an arbitrary `y > f x` instead of `f x + ε`. -/
def UpperSemicontinuousAt (f : α → β) (x : α) 
goal: Prop

full_name: UpperSemicontinuous
code: /-- A real function `f` is upper semicontinuous if, for any `ε > 0`, for any `x`, for all `x'`
close enough to `x`, then `f x'` is at most `f x + ε`. We formulate this in a general preordered
space, using an arbitrary `y > f x` instead of `f x + ε`. -/
def UpperSemicontinuous (f : α → β) 
goal: Prop

full_name: LowerSemicontinuousWithinAt.mono
code: theorem LowerSemicontinuousWithinAt.mono (h : LowerSemicontinuousWithinAt f s x) (hst : t ⊆ s) :
    LowerSemicontinuousWithinAt f t x 
goal: LowerSemicontinuousWithinAt f t x

full_name: lowerSemicontinuousWithinAt_univ_iff
code: theorem lowerSemicontinuousWithinAt_univ_iff :
    LowerSemicontinuousWithinAt f univ x ↔ LowerSemicontinuousAt f x 
goal: LowerSemicontinuousWithinAt f Set.univ x ↔ LowerSemicontinuousAt f x

full_name: LowerSemicontinuousAt.lowerSemicontinuousWithinAt
code: theorem LowerSemicontinuousAt.lowerSemicontinuousWithinAt (s : Set α)
    (h : LowerSemicontinuousAt f x) : LowerSemicontinuousWithinAt f s x 
goal: LowerSemicontinuousWithinAt f s x

full_name: LowerSemicontinuousOn.lowerSemicontinuousWithinAt
code: theorem LowerSemicontinuousOn.lowerSemicontinuousWithinAt (h : LowerSemicontinuousOn f s)
    (hx : x ∈ s) : LowerSemicontinuousWithinAt f s x 
goal: LowerSemicontinuousWithinAt f s x

full_name: LowerSemicontinuousOn.mono
code: theorem LowerSemicontinuousOn.mono (h : LowerSemicontinuousOn f s) (hst : t ⊆ s) :
    LowerSemicontinuousOn f t 
goal: LowerSemicontinuousOn f t

full_name: lowerSemicontinuousOn_univ_iff
code: theorem lowerSemicontinuousOn_univ_iff : LowerSemicontinuousOn f univ ↔ LowerSemicontinuous f 
goal: LowerSemicontinuousOn f Set.univ ↔ LowerSemicontinuous f

full_name: LowerSemicontinuous.lowerSemicontinuousAt
code: theorem LowerSemicontinuous.lowerSemicontinuousAt (h : LowerSemicontinuous f) (x : α) :
    LowerSemicontinuousAt f x 
goal: LowerSemicontinuousAt f x

full_name: LowerSemicontinuous.lowerSemicontinuousWithinAt
code: theorem LowerSemicontinuous.lowerSemicontinuousWithinAt (h : LowerSemicontinuous f) (s : Set α)
    (x : α) : LowerSemicontinuousWithinAt f s x 
goal: LowerSemicontinuousWithinAt f s x

full_name: LowerSemicontinuous.lowerSemicontinuousOn
code: theorem LowerSemicontinuous.lowerSemicontinuousOn (h : LowerSemicontinuous f) (s : Set α) :
    LowerSemicontinuousOn f s 
goal: LowerSemicontinuousOn f s

full_name: lowerSemicontinuousWithinAt_const
code: theorem lowerSemicontinuousWithinAt_const : LowerSemicontinuousWithinAt (fun _x => z) s x 
goal: LowerSemicontinuousWithinAt (fun _x => z) s x

full_name: lowerSemicontinuousAt_const
code: theorem lowerSemicontinuousAt_const : LowerSemicontinuousAt (fun _x => z) x 
goal: LowerSemicontinuousAt (fun _x => z) x

full_name: lowerSemicontinuousOn_const
code: theorem lowerSemicontinuousOn_const : LowerSemicontinuousOn (fun _x => z) s 
goal: LowerSemicontinuousOn (fun _x => z) s

full_name: lowerSemicontinuous_const
code: theorem lowerSemicontinuous_const : LowerSemicontinuous fun _x : α => z 
goal: LowerSemicontinuous fun _x => z

full_name: IsOpen.lowerSemicontinuous_indicator
code: theorem IsOpen.lowerSemicontinuous_indicator (hs : IsOpen s) (hy : 0 ≤ y) :
    LowerSemicontinuous (indicator s fun _x => y) 
goal: LowerSemicontinuous (s.indicator fun _x => y)

full_name: IsOpen.lowerSemicontinuousOn_indicator
code: theorem IsOpen.lowerSemicontinuousOn_indicator (hs : IsOpen s) (hy : 0 ≤ y) :
    LowerSemicontinuousOn (indicator s fun _x => y) t 
goal: LowerSemicontinuousOn (s.indicator fun _x => y) t

full_name: IsOpen.lowerSemicontinuousAt_indicator
code: theorem IsOpen.lowerSemicontinuousAt_indicator (hs : IsOpen s) (hy : 0 ≤ y) :
    LowerSemicontinuousAt (indicator s fun _x => y) x 
goal: LowerSemicontinuousAt (s.indicator fun _x => y) x

full_name: IsOpen.lowerSemicontinuousWithinAt_indicator
code: theorem IsOpen.lowerSemicontinuousWithinAt_indicator (hs : IsOpen s) (hy : 0 ≤ y) :
    LowerSemicontinuousWithinAt (indicator s fun _x => y) t x 
goal: LowerSemicontinuousWithinAt (s.indicator fun _x => y) t x

full_name: IsClosed.lowerSemicontinuous_indicator
code: theorem IsClosed.lowerSemicontinuous_indicator (hs : IsClosed s) (hy : y ≤ 0) :
    LowerSemicontinuous (indicator s fun _x => y) 
goal: LowerSemicontinuous (s.indicator fun _x => y)

full_name: IsClosed.lowerSemicontinuousOn_indicator
code: theorem IsClosed.lowerSemicontinuousOn_indicator (hs : IsClosed s) (hy : y ≤ 0) :
    LowerSemicontinuousOn (indicator s fun _x => y) t 
goal: LowerSemicontinuousOn (s.indicator fun _x => y) t

full_name: IsClosed.lowerSemicontinuousAt_indicator
code: theorem IsClosed.lowerSemicontinuousAt_indicator (hs : IsClosed s) (hy : y ≤ 0) :
    LowerSemicontinuousAt (indicator s fun _x => y) x 
goal: LowerSemicontinuousAt (s.indicator fun _x => y) x

full_name: IsClosed.lowerSemicontinuousWithinAt_indicator
code: theorem IsClosed.lowerSemicontinuousWithinAt_indicator (hs : IsClosed s) (hy : y ≤ 0) :
    LowerSemicontinuousWithinAt (indicator s fun _x => y) t x 
goal: LowerSemicontinuousWithinAt (s.indicator fun _x => y) t x

full_name: lowerSemicontinuous_iff_isOpen_preimage
code: theorem lowerSemicontinuous_iff_isOpen_preimage :
    LowerSemicontinuous f ↔ ∀ y, IsOpen (f ⁻¹' Ioi y) 
goal: LowerSemicontinuous f ↔ ∀ (y : β), IsOpen (f ⁻¹' Set.Ioi y)

full_name: LowerSemicontinuous.isOpen_preimage
code: theorem LowerSemicontinuous.isOpen_preimage (hf : LowerSemicontinuous f) (y : β) :
    IsOpen (f ⁻¹' Ioi y) 
goal: IsOpen (f ⁻¹' Set.Ioi y)

full_name: lowerSemicontinuous_iff_isClosed_preimage
code: theorem lowerSemicontinuous_iff_isClosed_preimage {f : α → γ} :
    LowerSemicontinuous f ↔ ∀ y, IsClosed (f ⁻¹' Iic y) 
goal: LowerSemicontinuous f ↔ ∀ (y : γ), IsClosed (f ⁻¹' Set.Iic y)

full_name: LowerSemicontinuous.isClosed_preimage
code: theorem LowerSemicontinuous.isClosed_preimage {f : α → γ} (hf : LowerSemicontinuous f) (y : γ) :
    IsClosed (f ⁻¹' Iic y) 
goal: IsClosed (f ⁻¹' Set.Iic y)

full_name: ContinuousWithinAt.lowerSemicontinuousWithinAt
code: theorem ContinuousWithinAt.lowerSemicontinuousWithinAt {f : α → γ} (h : ContinuousWithinAt f s x) :
    LowerSemicontinuousWithinAt f s x 
goal: LowerSemicontinuousWithinAt f s x

full_name: ContinuousAt.lowerSemicontinuousAt
code: theorem ContinuousAt.lowerSemicontinuousAt {f : α → γ} (h : ContinuousAt f x) :
    LowerSemicontinuousAt f x 
goal: LowerSemicontinuousAt f x

full_name: ContinuousOn.lowerSemicontinuousOn
code: theorem ContinuousOn.lowerSemicontinuousOn {f : α → γ} (h : ContinuousOn f s) :
    LowerSemicontinuousOn f s 
goal: LowerSemicontinuousOn f s

full_name: Continuous.lowerSemicontinuous
code: theorem Continuous.lowerSemicontinuous {f : α → γ} (h : Continuous f) : LowerSemicontinuous f 
goal: LowerSemicontinuous f

full_name: lowerSemicontinuousWithinAt_iff_le_liminf
code: theorem lowerSemicontinuousWithinAt_iff_le_liminf {f : α → γ} :
    LowerSemicontinuousWithinAt f s x ↔ f x ≤ liminf f (𝓝[s] x) 
goal: LowerSemicontinuousWithinAt f s x ↔ f x ≤ Filter.liminf f (𝓝[s] x)

full_name: lowerSemicontinuousAt_iff_le_liminf
code: theorem lowerSemicontinuousAt_iff_le_liminf {f : α → γ} :
    LowerSemicontinuousAt f x ↔ f x ≤ liminf f (𝓝 x) 
goal: LowerSemicontinuousAt f x ↔ f x ≤ Filter.liminf f (𝓝 x)

full_name: lowerSemicontinuous_iff_le_liminf
code: theorem lowerSemicontinuous_iff_le_liminf {f : α → γ} :
    LowerSemicontinuous f ↔ ∀ x, f x ≤ liminf f (𝓝 x) 
goal: LowerSemicontinuous f ↔ ∀ (x : α), f x ≤ Filter.liminf f (𝓝 x)

full_name: lowerSemicontinuousOn_iff_le_liminf
code: theorem lowerSemicontinuousOn_iff_le_liminf {f : α → γ} :
    LowerSemicontinuousOn f s ↔ ∀ x ∈ s, f x ≤ liminf f (𝓝[s] x) 
goal: LowerSemicontinuousOn f s ↔ ∀ x ∈ s, f x ≤ Filter.liminf f (𝓝[s] x)

full_name: lowerSemicontinuous_iff_isClosed_epigraph
code: theorem lowerSemicontinuous_iff_isClosed_epigraph {f : α → γ} :
    LowerSemicontinuous f ↔ IsClosed {p : α × γ | f p.1 ≤ p.2} 
goal: LowerSemicontinuous f ↔ IsClosed {p | f p.1 ≤ p.2}

full_name: ContinuousAt.comp_lowerSemicontinuousWithinAt
code: theorem ContinuousAt.comp_lowerSemicontinuousWithinAt {g : γ → δ} {f : α → γ}
    (hg : ContinuousAt g (f x)) (hf : LowerSemicontinuousWithinAt f s x) (gmon : Monotone g) :
    LowerSemicontinuousWithinAt (g ∘ f) s x 
goal: LowerSemicontinuousWithinAt (g ∘ f) s x

full_name: ContinuousAt.comp_lowerSemicontinuousAt
code: theorem ContinuousAt.comp_lowerSemicontinuousAt {g : γ → δ} {f : α → γ} (hg : ContinuousAt g (f x))
    (hf : LowerSemicontinuousAt f x) (gmon : Monotone g) : LowerSemicontinuousAt (g ∘ f) x 
goal: LowerSemicontinuousAt (g ∘ f) x

full_name: Continuous.comp_lowerSemicontinuousOn
code: theorem Continuous.comp_lowerSemicontinuousOn {g : γ → δ} {f : α → γ} (hg : Continuous g)
    (hf : LowerSemicontinuousOn f s) (gmon : Monotone g) : LowerSemicontinuousOn (g ∘ f) s 
goal: LowerSemicontinuousOn (g ∘ f) s

full_name: Continuous.comp_lowerSemicontinuous
code: theorem Continuous.comp_lowerSemicontinuous {g : γ → δ} {f : α → γ} (hg : Continuous g)
    (hf : LowerSemicontinuous f) (gmon : Monotone g) : LowerSemicontinuous (g ∘ f) 
goal: LowerSemicontinuous (g ∘ f)

full_name: ContinuousAt.comp_lowerSemicontinuousWithinAt_antitone
code: theorem ContinuousAt.comp_lowerSemicontinuousWithinAt_antitone {g : γ → δ} {f : α → γ}
    (hg : ContinuousAt g (f x)) (hf : LowerSemicontinuousWithinAt f s x) (gmon : Antitone g) :
    UpperSemicontinuousWithinAt (g ∘ f) s x 
goal: UpperSemicontinuousWithinAt (g ∘ f) s x

full_name: ContinuousAt.comp_lowerSemicontinuousAt_antitone
code: theorem ContinuousAt.comp_lowerSemicontinuousAt_antitone {g : γ → δ} {f : α → γ}
    (hg : ContinuousAt g (f x)) (hf : LowerSemicontinuousAt f x) (gmon : Antitone g) :
    UpperSemicontinuousAt (g ∘ f) x 
goal: UpperSemicontinuousAt (g ∘ f) x

full_name: Continuous.comp_lowerSemicontinuousOn_antitone
code: theorem Continuous.comp_lowerSemicontinuousOn_antitone {g : γ → δ} {f : α → γ} (hg : Continuous g)
    (hf : LowerSemicontinuousOn f s) (gmon : Antitone g) : UpperSemicontinuousOn (g ∘ f) s 
goal: UpperSemicontinuousOn (g ∘ f) s

full_name: Continuous.comp_lowerSemicontinuous_antitone
code: theorem Continuous.comp_lowerSemicontinuous_antitone {g : γ → δ} {f : α → γ} (hg : Continuous g)
    (hf : LowerSemicontinuous f) (gmon : Antitone g) : UpperSemicontinuous (g ∘ f) 
goal: UpperSemicontinuous (g ∘ f)

full_name: LowerSemicontinuousAt.comp_continuousAt
code: theorem LowerSemicontinuousAt.comp_continuousAt {f : α → β} {g : ι → α} {x : ι}
    (hf : LowerSemicontinuousAt f (g x)) (hg : ContinuousAt g x) :
    LowerSemicontinuousAt (fun x ↦ f (g x)) x 
goal: LowerSemicontinuousAt (fun x => f (g x)) x

full_name: LowerSemicontinuousAt.comp_continuousAt_of_eq
code: theorem LowerSemicontinuousAt.comp_continuousAt_of_eq {f : α → β} {g : ι → α} {y : α} {x : ι}
    (hf : LowerSemicontinuousAt f y) (hg : ContinuousAt g x) (hy : g x = y) :
    LowerSemicontinuousAt (fun x ↦ f (g x)) x 
goal: LowerSemicontinuousAt (fun x => f (g x)) x

full_name: LowerSemicontinuous.comp_continuous
code: theorem LowerSemicontinuous.comp_continuous {f : α → β} {g : ι → α}
    (hf : LowerSemicontinuous f) (hg : Continuous g) : LowerSemicontinuous fun x ↦ f (g x) 
goal: LowerSemicontinuous fun x => f (g x)

full_name: LowerSemicontinuousWithinAt.add'
code: /-- The sum of two lower semicontinuous functions is lower semicontinuous. Formulated with an
explicit continuity assumption on addition, for application to `EReal`. The unprimed version of
the lemma uses `[ContinuousAdd]`. -/
theorem LowerSemicontinuousWithinAt.add' {f g : α → γ} (hf : LowerSemicontinuousWithinAt f s x)
    (hg : LowerSemicontinuousWithinAt g s x)
    (hcont : ContinuousAt (fun p : γ × γ => p.1 + p.2) (f x, g x)) :
    LowerSemicontinuousWithinAt (fun z => f z + g z) s x 
goal: LowerSemicontinuousWithinAt (fun z => f z + g z) s x

full_name: LowerSemicontinuousAt.add'
code: /-- The sum of two lower semicontinuous functions is lower semicontinuous. Formulated with an
explicit continuity assumption on addition, for application to `EReal`. The unprimed version of
the lemma uses `[ContinuousAdd]`. -/
theorem LowerSemicontinuousAt.add' {f g : α → γ} (hf : LowerSemicontinuousAt f x)
    (hg : LowerSemicontinuousAt g x)
    (hcont : ContinuousAt (fun p : γ × γ => p.1 + p.2) (f x, g x)) :
    LowerSemicontinuousAt (fun z => f z + g z) x 
goal: LowerSemicontinuousAt (fun z => f z + g z) x

full_name: LowerSemicontinuousOn.add'
code: /-- The sum of two lower semicontinuous functions is lower semicontinuous. Formulated with an
explicit continuity assumption on addition, for application to `EReal`. The unprimed version of
the lemma uses `[ContinuousAdd]`. -/
theorem LowerSemicontinuousOn.add' {f g : α → γ} (hf : LowerSemicontinuousOn f s)
    (hg : LowerSemicontinuousOn g s)
    (hcont : ∀ x ∈ s, ContinuousAt (fun p : γ × γ => p.1 + p.2) (f x, g x)) :
    LowerSemicontinuousOn (fun z => f z + g z) s 
goal: LowerSemicontinuousOn (fun z => f z + g z) s

full_name: LowerSemicontinuous.add'
code: /-- The sum of two lower semicontinuous functions is lower semicontinuous. Formulated with an
explicit continuity assumption on addition, for application to `EReal`. The unprimed version of
the lemma uses `[ContinuousAdd]`. -/
theorem LowerSemicontinuous.add' {f g : α → γ} (hf : LowerSemicontinuous f)
    (hg : LowerSemicontinuous g)
    (hcont : ∀ x, ContinuousAt (fun p : γ × γ => p.1 + p.2) (f x, g x)) :
    LowerSemicontinuous fun z => f z + g z 
goal: LowerSemicontinuous fun z => f z + g z

full_name: LowerSemicontinuousWithinAt.add
code: /-- The sum of two lower semicontinuous functions is lower semicontinuous. Formulated with
`[ContinuousAdd]`. The primed version of the lemma uses an explicit continuity assumption on
addition, for application to `EReal`. -/
theorem LowerSemicontinuousWithinAt.add {f g : α → γ} (hf : LowerSemicontinuousWithinAt f s x)
    (hg : LowerSemicontinuousWithinAt g s x) :
    LowerSemicontinuousWithinAt (fun z => f z + g z) s x 
goal: LowerSemicontinuousWithinAt (fun z => f z + g z) s x

full_name: LowerSemicontinuousAt.add
code: /-- The sum of two lower semicontinuous functions is lower semicontinuous. Formulated with
`[ContinuousAdd]`. The primed version of the lemma uses an explicit continuity assumption on
addition, for application to `EReal`. -/
theorem LowerSemicontinuousAt.add {f g : α → γ} (hf : LowerSemicontinuousAt f x)
    (hg : LowerSemicontinuousAt g x) : LowerSemicontinuousAt (fun z => f z + g z) x 
goal: LowerSemicontinuousAt (fun z => f z + g z) x

full_name: LowerSemicontinuousOn.add
code: /-- The sum of two lower semicontinuous functions is lower semicontinuous. Formulated with
`[ContinuousAdd]`. The primed version of the lemma uses an explicit continuity assumption on
addition, for application to `EReal`. -/
theorem LowerSemicontinuousOn.add {f g : α → γ} (hf : LowerSemicontinuousOn f s)
    (hg : LowerSemicontinuousOn g s) : LowerSemicontinuousOn (fun z => f z + g z) s 
goal: LowerSemicontinuousOn (fun z => f z + g z) s

full_name: LowerSemicontinuous.add
code: /-- The sum of two lower semicontinuous functions is lower semicontinuous. Formulated with
`[ContinuousAdd]`. The primed version of the lemma uses an explicit continuity assumption on
addition, for application to `EReal`. -/
theorem LowerSemicontinuous.add {f g : α → γ} (hf : LowerSemicontinuous f)
    (hg : LowerSemicontinuous g) : LowerSemicontinuous fun z => f z + g z 
goal: LowerSemicontinuous fun z => f z + g z

full_name: lowerSemicontinuousWithinAt_sum
code: theorem lowerSemicontinuousWithinAt_sum {f : ι → α → γ} {a : Finset ι}
    (ha : ∀ i ∈ a, LowerSemicontinuousWithinAt (f i) s x) :
    LowerSemicontinuousWithinAt (fun z => ∑ i ∈ a, f i z) s x 
goal: LowerSemicontinuousWithinAt (fun z => ∑ i ∈ a, f i z) s x

full_name: lowerSemicontinuousAt_sum
code: theorem lowerSemicontinuousAt_sum {f : ι → α → γ} {a : Finset ι}
    (ha : ∀ i ∈ a, LowerSemicontinuousAt (f i) x) :
    LowerSemicontinuousAt (fun z => ∑ i ∈ a, f i z) x 
goal: LowerSemicontinuousAt (fun z => ∑ i ∈ a, f i z) x

full_name: lowerSemicontinuousOn_sum
code: theorem lowerSemicontinuousOn_sum {f : ι → α → γ} {a : Finset ι}
    (ha : ∀ i ∈ a, LowerSemicontinuousOn (f i) s) :
    LowerSemicontinuousOn (fun z => ∑ i ∈ a, f i z) s 
goal: LowerSemicontinuousOn (fun z => ∑ i ∈ a, f i z) s

full_name: lowerSemicontinuous_sum
code: theorem lowerSemicontinuous_sum {f : ι → α → γ} {a : Finset ι}
    (ha : ∀ i ∈ a, LowerSemicontinuous (f i)) : LowerSemicontinuous fun z => ∑ i ∈ a, f i z 
goal: LowerSemicontinuous fun z => ∑ i ∈ a, f i z

full_name: lowerSemicontinuousWithinAt_ciSup
code: theorem lowerSemicontinuousWithinAt_ciSup {f : ι → α → δ'}
    (bdd : ∀ᶠ y in 𝓝[s] x, BddAbove (range fun i => f i y))
    (h : ∀ i, LowerSemicontinuousWithinAt (f i) s x) :
    LowerSemicontinuousWithinAt (fun x' => ⨆ i, f i x') s x 
goal: LowerSemicontinuousWithinAt (fun x' => ⨆ i, f i x') s x

full_name: lowerSemicontinuousWithinAt_iSup
code: theorem lowerSemicontinuousWithinAt_iSup {f : ι → α → δ}
    (h : ∀ i, LowerSemicontinuousWithinAt (f i) s x) :
    LowerSemicontinuousWithinAt (fun x' => ⨆ i, f i x') s x 
goal: LowerSemicontinuousWithinAt (fun x' => ⨆ i, f i x') s x

full_name: lowerSemicontinuousWithinAt_biSup
code: theorem lowerSemicontinuousWithinAt_biSup {p : ι → Prop} {f : ∀ i, p i → α → δ}
    (h : ∀ i hi, LowerSemicontinuousWithinAt (f i hi) s x) :
    LowerSemicontinuousWithinAt (fun x' => ⨆ (i) (hi), f i hi x') s x 
goal: LowerSemicontinuousWithinAt (fun x' => ⨆ i, ⨆ (hi : p i), f i hi x') s x

full_name: lowerSemicontinuousAt_ciSup
code: theorem lowerSemicontinuousAt_ciSup {f : ι → α → δ'}
    (bdd : ∀ᶠ y in 𝓝 x, BddAbove (range fun i => f i y)) (h : ∀ i, LowerSemicontinuousAt (f i) x) :
    LowerSemicontinuousAt (fun x' => ⨆ i, f i x') x 
goal: LowerSemicontinuousAt (fun x' => ⨆ i, f i x') x

full_name: lowerSemicontinuousAt_iSup
code: theorem lowerSemicontinuousAt_iSup {f : ι → α → δ} (h : ∀ i, LowerSemicontinuousAt (f i) x) :
    LowerSemicontinuousAt (fun x' => ⨆ i, f i x') x 
goal: LowerSemicontinuousAt (fun x' => ⨆ i, f i x') x

full_name: lowerSemicontinuousAt_biSup
code: theorem lowerSemicontinuousAt_biSup {p : ι → Prop} {f : ∀ i, p i → α → δ}
    (h : ∀ i hi, LowerSemicontinuousAt (f i hi) x) :
    LowerSemicontinuousAt (fun x' => ⨆ (i) (hi), f i hi x') x 
goal: LowerSemicontinuousAt (fun x' => ⨆ i, ⨆ (hi : p i), f i hi x') x

full_name: lowerSemicontinuousOn_ciSup
code: theorem lowerSemicontinuousOn_ciSup {f : ι → α → δ'}
    (bdd : ∀ x ∈ s, BddAbove (range fun i => f i x)) (h : ∀ i, LowerSemicontinuousOn (f i) s) :
    LowerSemicontinuousOn (fun x' => ⨆ i, f i x') s 
goal: LowerSemicontinuousOn (fun x' => ⨆ i, f i x') s

full_name: lowerSemicontinuousOn_iSup
code: theorem lowerSemicontinuousOn_iSup {f : ι → α → δ} (h : ∀ i, LowerSemicontinuousOn (f i) s) :
    LowerSemicontinuousOn (fun x' => ⨆ i, f i x') s 
goal: LowerSemicontinuousOn (fun x' => ⨆ i, f i x') s

full_name: lowerSemicontinuousOn_biSup
code: theorem lowerSemicontinuousOn_biSup {p : ι → Prop} {f : ∀ i, p i → α → δ}
    (h : ∀ i hi, LowerSemicontinuousOn (f i hi) s) :
    LowerSemicontinuousOn (fun x' => ⨆ (i) (hi), f i hi x') s 
goal: LowerSemicontinuousOn (fun x' => ⨆ i, ⨆ (hi : p i), f i hi x') s

full_name: lowerSemicontinuous_ciSup
code: theorem lowerSemicontinuous_ciSup {f : ι → α → δ'} (bdd : ∀ x, BddAbove (range fun i => f i x))
    (h : ∀ i, LowerSemicontinuous (f i)) : LowerSemicontinuous fun x' => ⨆ i, f i x' 
goal: LowerSemicontinuous fun x' => ⨆ i, f i x'

full_name: lowerSemicontinuous_iSup
code: theorem lowerSemicontinuous_iSup {f : ι → α → δ} (h : ∀ i, LowerSemicontinuous (f i)) :
    LowerSemicontinuous fun x' => ⨆ i, f i x' 
goal: LowerSemicontinuous fun x' => ⨆ i, f i x'

full_name: lowerSemicontinuous_biSup
code: theorem lowerSemicontinuous_biSup {p : ι → Prop} {f : ∀ i, p i → α → δ}
    (h : ∀ i hi, LowerSemicontinuous (f i hi)) :
    LowerSemicontinuous fun x' => ⨆ (i) (hi), f i hi x' 
goal: LowerSemicontinuous fun x' => ⨆ i, ⨆ (hi : p i), f i hi x'

full_name: lowerSemicontinuousWithinAt_tsum
code: theorem lowerSemicontinuousWithinAt_tsum {f : ι → α → ℝ≥0∞}
    (h : ∀ i, LowerSemicontinuousWithinAt (f i) s x) :
    LowerSemicontinuousWithinAt (fun x' => ∑' i, f i x') s x 
goal: LowerSemicontinuousWithinAt (fun x' => ∑' (i : ι), f i x') s x

full_name: lowerSemicontinuousAt_tsum
code: theorem lowerSemicontinuousAt_tsum {f : ι → α → ℝ≥0∞} (h : ∀ i, LowerSemicontinuousAt (f i) x) :
    LowerSemicontinuousAt (fun x' => ∑' i, f i x') x 
goal: LowerSemicontinuousAt (fun x' => ∑' (i : ι), f i x') x

full_name: lowerSemicontinuousOn_tsum
code: theorem lowerSemicontinuousOn_tsum {f : ι → α → ℝ≥0∞} (h : ∀ i, LowerSemicontinuousOn (f i) s) :
    LowerSemicontinuousOn (fun x' => ∑' i, f i x') s 
goal: LowerSemicontinuousOn (fun x' => ∑' (i : ι), f i x') s

full_name: lowerSemicontinuous_tsum
code: theorem lowerSemicontinuous_tsum {f : ι → α → ℝ≥0∞} (h : ∀ i, LowerSemicontinuous (f i)) :
    LowerSemicontinuous fun x' => ∑' i, f i x' 
goal: LowerSemicontinuous fun x' => ∑' (i : ι), f i x'

full_name: UpperSemicontinuousWithinAt.mono
code: theorem UpperSemicontinuousWithinAt.mono (h : UpperSemicontinuousWithinAt f s x) (hst : t ⊆ s) :
    UpperSemicontinuousWithinAt f t x 
goal: UpperSemicontinuousWithinAt f t x

full_name: upperSemicontinuousWithinAt_univ_iff
code: theorem upperSemicontinuousWithinAt_univ_iff :
    UpperSemicontinuousWithinAt f univ x ↔ UpperSemicontinuousAt f x 
goal: UpperSemicontinuousWithinAt f Set.univ x ↔ UpperSemicontinuousAt f x

full_name: UpperSemicontinuousAt.upperSemicontinuousWithinAt
code: theorem UpperSemicontinuousAt.upperSemicontinuousWithinAt (s : Set α)
    (h : UpperSemicontinuousAt f x) : UpperSemicontinuousWithinAt f s x 
goal: UpperSemicontinuousWithinAt f s x

full_name: UpperSemicontinuousOn.upperSemicontinuousWithinAt
code: theorem UpperSemicontinuousOn.upperSemicontinuousWithinAt (h : UpperSemicontinuousOn f s)
    (hx : x ∈ s) : UpperSemicontinuousWithinAt f s x 
goal: UpperSemicontinuousWithinAt f s x

full_name: UpperSemicontinuousOn.mono
code: theorem UpperSemicontinuousOn.mono (h : UpperSemicontinuousOn f s) (hst : t ⊆ s) :
    UpperSemicontinuousOn f t 
goal: UpperSemicontinuousOn f t

full_name: upperSemicontinuousOn_univ_iff
code: theorem upperSemicontinuousOn_univ_iff : UpperSemicontinuousOn f univ ↔ UpperSemicontinuous f 
goal: UpperSemicontinuousOn f Set.univ ↔ UpperSemicontinuous f

full_name: UpperSemicontinuous.upperSemicontinuousAt
code: theorem UpperSemicontinuous.upperSemicontinuousAt (h : UpperSemicontinuous f) (x : α) :
    UpperSemicontinuousAt f x 
goal: UpperSemicontinuousAt f x

full_name: UpperSemicontinuous.upperSemicontinuousWithinAt
code: theorem UpperSemicontinuous.upperSemicontinuousWithinAt (h : UpperSemicontinuous f) (s : Set α)
    (x : α) : UpperSemicontinuousWithinAt f s x 
goal: UpperSemicontinuousWithinAt f s x

full_name: UpperSemicontinuous.upperSemicontinuousOn
code: theorem UpperSemicontinuous.upperSemicontinuousOn (h : UpperSemicontinuous f) (s : Set α) :
    UpperSemicontinuousOn f s 
goal: UpperSemicontinuousOn f s

full_name: upperSemicontinuousWithinAt_const
code: theorem upperSemicontinuousWithinAt_const : UpperSemicontinuousWithinAt (fun _x => z) s x 
goal: UpperSemicontinuousWithinAt (fun _x => z) s x

full_name: upperSemicontinuousAt_const
code: theorem upperSemicontinuousAt_const : UpperSemicontinuousAt (fun _x => z) x 
goal: UpperSemicontinuousAt (fun _x => z) x

full_name: upperSemicontinuousOn_const
code: theorem upperSemicontinuousOn_const : UpperSemicontinuousOn (fun _x => z) s 
goal: UpperSemicontinuousOn (fun _x => z) s

full_name: upperSemicontinuous_const
code: theorem upperSemicontinuous_const : UpperSemicontinuous fun _x : α => z 
goal: UpperSemicontinuous fun _x => z

full_name: IsOpen.upperSemicontinuous_indicator
code: theorem IsOpen.upperSemicontinuous_indicator (hs : IsOpen s) (hy : y ≤ 0) :
    UpperSemicontinuous (indicator s fun _x => y) 
goal: UpperSemicontinuous (s.indicator fun _x => y)

full_name: IsOpen.upperSemicontinuousOn_indicator
code: theorem IsOpen.upperSemicontinuousOn_indicator (hs : IsOpen s) (hy : y ≤ 0) :
    UpperSemicontinuousOn (indicator s fun _x => y) t 
goal: UpperSemicontinuousOn (s.indicator fun _x => y) t

full_name: IsOpen.upperSemicontinuousAt_indicator
code: theorem IsOpen.upperSemicontinuousAt_indicator (hs : IsOpen s) (hy : y ≤ 0) :
    UpperSemicontinuousAt (indicator s fun _x => y) x 
goal: UpperSemicontinuousAt (s.indicator fun _x => y) x

full_name: IsOpen.upperSemicontinuousWithinAt_indicator
code: theorem IsOpen.upperSemicontinuousWithinAt_indicator (hs : IsOpen s) (hy : y ≤ 0) :
    UpperSemicontinuousWithinAt (indicator s fun _x => y) t x 
goal: UpperSemicontinuousWithinAt (s.indicator fun _x => y) t x

full_name: IsClosed.upperSemicontinuous_indicator
code: theorem IsClosed.upperSemicontinuous_indicator (hs : IsClosed s) (hy : 0 ≤ y) :
    UpperSemicontinuous (indicator s fun _x => y) 
goal: UpperSemicontinuous (s.indicator fun _x => y)

full_name: IsClosed.upperSemicontinuousOn_indicator
code: theorem IsClosed.upperSemicontinuousOn_indicator (hs : IsClosed s) (hy : 0 ≤ y) :
    UpperSemicontinuousOn (indicator s fun _x => y) t 
goal: UpperSemicontinuousOn (s.indicator fun _x => y) t

full_name: IsClosed.upperSemicontinuousAt_indicator
code: theorem IsClosed.upperSemicontinuousAt_indicator (hs : IsClosed s) (hy : 0 ≤ y) :
    UpperSemicontinuousAt (indicator s fun _x => y) x 
goal: UpperSemicontinuousAt (s.indicator fun _x => y) x

full_name: IsClosed.upperSemicontinuousWithinAt_indicator
code: theorem IsClosed.upperSemicontinuousWithinAt_indicator (hs : IsClosed s) (hy : 0 ≤ y) :
    UpperSemicontinuousWithinAt (indicator s fun _x => y) t x 
goal: UpperSemicontinuousWithinAt (s.indicator fun _x => y) t x

full_name: upperSemicontinuous_iff_isOpen_preimage
code: theorem upperSemicontinuous_iff_isOpen_preimage :
    UpperSemicontinuous f ↔ ∀ y, IsOpen (f ⁻¹' Iio y) 
goal: UpperSemicontinuous f ↔ ∀ (y : β), IsOpen (f ⁻¹' Set.Iio y)

full_name: UpperSemicontinuous.isOpen_preimage
code: theorem UpperSemicontinuous.isOpen_preimage (hf : UpperSemicontinuous f) (y : β) :
    IsOpen (f ⁻¹' Iio y) 
goal: IsOpen (f ⁻¹' Set.Iio y)

full_name: upperSemicontinuous_iff_isClosed_preimage
code: theorem upperSemicontinuous_iff_isClosed_preimage {f : α → γ} :
    UpperSemicontinuous f ↔ ∀ y, IsClosed (f ⁻¹' Ici y) 
goal: UpperSemicontinuous f ↔ ∀ (y : γ), IsClosed (f ⁻¹' Set.Ici y)

full_name: UpperSemicontinuous.isClosed_preimage
code: theorem UpperSemicontinuous.isClosed_preimage {f : α → γ} (hf : UpperSemicontinuous f) (y : γ) :
    IsClosed (f ⁻¹' Ici y) 
goal: IsClosed (f ⁻¹' Set.Ici y)

full_name: ContinuousWithinAt.upperSemicontinuousWithinAt
code: theorem ContinuousWithinAt.upperSemicontinuousWithinAt {f : α → γ} (h : ContinuousWithinAt f s x) :
    UpperSemicontinuousWithinAt f s x 
goal: UpperSemicontinuousWithinAt f s x

full_name: ContinuousAt.upperSemicontinuousAt
code: theorem ContinuousAt.upperSemicontinuousAt {f : α → γ} (h : ContinuousAt f x) :
    UpperSemicontinuousAt f x 
goal: UpperSemicontinuousAt f x

full_name: ContinuousOn.upperSemicontinuousOn
code: theorem ContinuousOn.upperSemicontinuousOn {f : α → γ} (h : ContinuousOn f s) :
    UpperSemicontinuousOn f s 
goal: UpperSemicontinuousOn f s

full_name: Continuous.upperSemicontinuous
code: theorem Continuous.upperSemicontinuous {f : α → γ} (h : Continuous f) : UpperSemicontinuous f 
goal: UpperSemicontinuous f

full_name: upperSemicontinuousWithinAt_iff_limsup_le
code: theorem upperSemicontinuousWithinAt_iff_limsup_le {f : α → γ} :
    UpperSemicontinuousWithinAt f s x ↔ limsup f (𝓝[s] x) ≤ f x 
goal: UpperSemicontinuousWithinAt f s x ↔ Filter.limsup f (𝓝[s] x) ≤ f x

full_name: upperSemicontinuousAt_iff_limsup_le
code: theorem upperSemicontinuousAt_iff_limsup_le {f : α → γ} :
    UpperSemicontinuousAt f x ↔ limsup f (𝓝 x) ≤ f x 
goal: UpperSemicontinuousAt f x ↔ Filter.limsup f (𝓝 x) ≤ f x

full_name: upperSemicontinuous_iff_limsup_le
code: theorem upperSemicontinuous_iff_limsup_le {f : α → γ} :
    UpperSemicontinuous f ↔ ∀ x, limsup f (𝓝 x) ≤ f x 
goal: UpperSemicontinuous f ↔ ∀ (x : α), Filter.limsup f (𝓝 x) ≤ f x

full_name: upperSemicontinuousOn_iff_limsup_le
code: theorem upperSemicontinuousOn_iff_limsup_le {f : α → γ} :
    UpperSemicontinuousOn f s ↔ ∀ x ∈ s, limsup f (𝓝[s] x) ≤ f x 
goal: UpperSemicontinuousOn f s ↔ ∀ x ∈ s, Filter.limsup f (𝓝[s] x) ≤ f x

full_name: upperSemicontinuous_iff_IsClosed_hypograph
code: theorem upperSemicontinuous_iff_IsClosed_hypograph {f : α → γ} :
    UpperSemicontinuous f ↔ IsClosed {p : α × γ | p.2 ≤ f p.1} 
goal: UpperSemicontinuous f ↔ IsClosed {p | p.2 ≤ f p.1}

full_name: ContinuousAt.comp_upperSemicontinuousWithinAt
code: theorem ContinuousAt.comp_upperSemicontinuousWithinAt {g : γ → δ} {f : α → γ}
    (hg : ContinuousAt g (f x)) (hf : UpperSemicontinuousWithinAt f s x) (gmon : Monotone g) :
    UpperSemicontinuousWithinAt (g ∘ f) s x 
goal: UpperSemicontinuousWithinAt (g ∘ f) s x

full_name: ContinuousAt.comp_upperSemicontinuousAt
code: theorem ContinuousAt.comp_upperSemicontinuousAt {g : γ → δ} {f : α → γ} (hg : ContinuousAt g (f x))
    (hf : UpperSemicontinuousAt f x) (gmon : Monotone g) : UpperSemicontinuousAt (g ∘ f) x 
goal: UpperSemicontinuousAt (g ∘ f) x

full_name: Continuous.comp_upperSemicontinuousOn
code: theorem Continuous.comp_upperSemicontinuousOn {g : γ → δ} {f : α → γ} (hg : Continuous g)
    (hf : UpperSemicontinuousOn f s) (gmon : Monotone g) : UpperSemicontinuousOn (g ∘ f) s 
goal: UpperSemicontinuousOn (g ∘ f) s

full_name: Continuous.comp_upperSemicontinuous
code: theorem Continuous.comp_upperSemicontinuous {g : γ → δ} {f : α → γ} (hg : Continuous g)
    (hf : UpperSemicontinuous f) (gmon : Monotone g) : UpperSemicontinuous (g ∘ f) 
goal: UpperSemicontinuous (g ∘ f)

full_name: ContinuousAt.comp_upperSemicontinuousWithinAt_antitone
code: theorem ContinuousAt.comp_upperSemicontinuousWithinAt_antitone {g : γ → δ} {f : α → γ}
    (hg : ContinuousAt g (f x)) (hf : UpperSemicontinuousWithinAt f s x) (gmon : Antitone g) :
    LowerSemicontinuousWithinAt (g ∘ f) s x 
goal: LowerSemicontinuousWithinAt (g ∘ f) s x

full_name: ContinuousAt.comp_upperSemicontinuousAt_antitone
code: theorem ContinuousAt.comp_upperSemicontinuousAt_antitone {g : γ → δ} {f : α → γ}
    (hg : ContinuousAt g (f x)) (hf : UpperSemicontinuousAt f x) (gmon : Antitone g) :
    LowerSemicontinuousAt (g ∘ f) x 
goal: LowerSemicontinuousAt (g ∘ f) x

full_name: Continuous.comp_upperSemicontinuousOn_antitone
code: theorem Continuous.comp_upperSemicontinuousOn_antitone {g : γ → δ} {f : α → γ} (hg : Continuous g)
    (hf : UpperSemicontinuousOn f s) (gmon : Antitone g) : LowerSemicontinuousOn (g ∘ f) s 
goal: LowerSemicontinuousOn (g ∘ f) s

full_name: Continuous.comp_upperSemicontinuous_antitone
code: theorem Continuous.comp_upperSemicontinuous_antitone {g : γ → δ} {f : α → γ} (hg : Continuous g)
    (hf : UpperSemicontinuous f) (gmon : Antitone g) : LowerSemicontinuous (g ∘ f) 
goal: LowerSemicontinuous (g ∘ f)

full_name: UpperSemicontinuousAt.comp_continuousAt
code: theorem UpperSemicontinuousAt.comp_continuousAt {f : α → β} {g : ι → α} {x : ι}
    (hf : UpperSemicontinuousAt f (g x)) (hg : ContinuousAt g x) :
    UpperSemicontinuousAt (fun x ↦ f (g x)) x 
goal: UpperSemicontinuousAt (fun x => f (g x)) x

full_name: UpperSemicontinuousAt.comp_continuousAt_of_eq
code: theorem UpperSemicontinuousAt.comp_continuousAt_of_eq {f : α → β} {g : ι → α} {y : α} {x : ι}
    (hf : UpperSemicontinuousAt f y) (hg : ContinuousAt g x) (hy : g x = y) :
    UpperSemicontinuousAt (fun x ↦ f (g x)) x 
goal: UpperSemicontinuousAt (fun x => f (g x)) x

full_name: UpperSemicontinuous.comp_continuous
code: theorem UpperSemicontinuous.comp_continuous {f : α → β} {g : ι → α}
    (hf : UpperSemicontinuous f) (hg : Continuous g) : UpperSemicontinuous fun x ↦ f (g x) 
goal: UpperSemicontinuous fun x => f (g x)

full_name: UpperSemicontinuousWithinAt.add'
code: /-- The sum of two upper semicontinuous functions is upper semicontinuous. Formulated with an
explicit continuity assumption on addition, for application to `EReal`. The unprimed version of
the lemma uses `[ContinuousAdd]`. -/
theorem UpperSemicontinuousWithinAt.add' {f g : α → γ} (hf : UpperSemicontinuousWithinAt f s x)
    (hg : UpperSemicontinuousWithinAt g s x)
    (hcont : ContinuousAt (fun p : γ × γ => p.1 + p.2) (f x, g x)) :
    UpperSemicontinuousWithinAt (fun z => f z + g z) s x 
goal: UpperSemicontinuousWithinAt (fun z => f z + g z) s x

full_name: UpperSemicontinuousAt.add'
code: /-- The sum of two upper semicontinuous functions is upper semicontinuous. Formulated with an
explicit continuity assumption on addition, for application to `EReal`. The unprimed version of
the lemma uses `[ContinuousAdd]`. -/
theorem UpperSemicontinuousAt.add' {f g : α → γ} (hf : UpperSemicontinuousAt f x)
    (hg : UpperSemicontinuousAt g x)
    (hcont : ContinuousAt (fun p : γ × γ => p.1 + p.2) (f x, g x)) :
    UpperSemicontinuousAt (fun z => f z + g z) x 
goal: UpperSemicontinuousAt (fun z => f z + g z) x

full_name: UpperSemicontinuousOn.add'
code: /-- The sum of two upper semicontinuous functions is upper semicontinuous. Formulated with an
explicit continuity assumption on addition, for application to `EReal`. The unprimed version of
the lemma uses `[ContinuousAdd]`. -/
theorem UpperSemicontinuousOn.add' {f g : α → γ} (hf : UpperSemicontinuousOn f s)
    (hg : UpperSemicontinuousOn g s)
    (hcont : ∀ x ∈ s, ContinuousAt (fun p : γ × γ => p.1 + p.2) (f x, g x)) :
    UpperSemicontinuousOn (fun z => f z + g z) s 
goal: UpperSemicontinuousOn (fun z => f z + g z) s

full_name: UpperSemicontinuous.add'
code: /-- The sum of two upper semicontinuous functions is upper semicontinuous. Formulated with an
explicit continuity assumption on addition, for application to `EReal`. The unprimed version of
the lemma uses `[ContinuousAdd]`. -/
theorem UpperSemicontinuous.add' {f g : α → γ} (hf : UpperSemicontinuous f)
    (hg : UpperSemicontinuous g)
    (hcont : ∀ x, ContinuousAt (fun p : γ × γ => p.1 + p.2) (f x, g x)) :
    UpperSemicontinuous fun z => f z + g z 
goal: UpperSemicontinuous fun z => f z + g z

full_name: UpperSemicontinuousWithinAt.add
code: /-- The sum of two upper semicontinuous functions is upper semicontinuous. Formulated with
`[ContinuousAdd]`. The primed version of the lemma uses an explicit continuity assumption on
addition, for application to `EReal`. -/
theorem UpperSemicontinuousWithinAt.add {f g : α → γ} (hf : UpperSemicontinuousWithinAt f s x)
    (hg : UpperSemicontinuousWithinAt g s x) :
    UpperSemicontinuousWithinAt (fun z => f z + g z) s x 
goal: UpperSemicontinuousWithinAt (fun z => f z + g z) s x

full_name: UpperSemicontinuousAt.add
code: /-- The sum of two upper semicontinuous functions is upper semicontinuous. Formulated with
`[ContinuousAdd]`. The primed version of the lemma uses an explicit continuity assumption on
addition, for application to `EReal`. -/
theorem UpperSemicontinuousAt.add {f g : α → γ} (hf : UpperSemicontinuousAt f x)
    (hg : UpperSemicontinuousAt g x) : UpperSemicontinuousAt (fun z => f z + g z) x 
goal: UpperSemicontinuousAt (fun z => f z + g z) x

full_name: UpperSemicontinuousOn.add
code: /-- The sum of two upper semicontinuous functions is upper semicontinuous. Formulated with
`[ContinuousAdd]`. The primed version of the lemma uses an explicit continuity assumption on
addition, for application to `EReal`. -/
theorem UpperSemicontinuousOn.add {f g : α → γ} (hf : UpperSemicontinuousOn f s)
    (hg : UpperSemicontinuousOn g s) : UpperSemicontinuousOn (fun z => f z + g z) s 
goal: UpperSemicontinuousOn (fun z => f z + g z) s

full_name: UpperSemicontinuous.add
code: /-- The sum of two upper semicontinuous functions is upper semicontinuous. Formulated with
`[ContinuousAdd]`. The primed version of the lemma uses an explicit continuity assumption on
addition, for application to `EReal`. -/
theorem UpperSemicontinuous.add {f g : α → γ} (hf : UpperSemicontinuous f)
    (hg : UpperSemicontinuous g) : UpperSemicontinuous fun z => f z + g z 
goal: UpperSemicontinuous fun z => f z + g z

full_name: upperSemicontinuousWithinAt_sum
code: theorem upperSemicontinuousWithinAt_sum {f : ι → α → γ} {a : Finset ι}
    (ha : ∀ i ∈ a, UpperSemicontinuousWithinAt (f i) s x) :
    UpperSemicontinuousWithinAt (fun z => ∑ i ∈ a, f i z) s x 
goal: UpperSemicontinuousWithinAt (fun z => ∑ i ∈ a, f i z) s x

full_name: upperSemicontinuousAt_sum
code: theorem upperSemicontinuousAt_sum {f : ι → α → γ} {a : Finset ι}
    (ha : ∀ i ∈ a, UpperSemicontinuousAt (f i) x) :
    UpperSemicontinuousAt (fun z => ∑ i ∈ a, f i z) x 
goal: UpperSemicontinuousAt (fun z => ∑ i ∈ a, f i z) x

full_name: upperSemicontinuousOn_sum
code: theorem upperSemicontinuousOn_sum {f : ι → α → γ} {a : Finset ι}
    (ha : ∀ i ∈ a, UpperSemicontinuousOn (f i) s) :
    UpperSemicontinuousOn (fun z => ∑ i ∈ a, f i z) s 
goal: UpperSemicontinuousOn (fun z => ∑ i ∈ a, f i z) s

full_name: upperSemicontinuous_sum
code: theorem upperSemicontinuous_sum {f : ι → α → γ} {a : Finset ι}
    (ha : ∀ i ∈ a, UpperSemicontinuous (f i)) : UpperSemicontinuous fun z => ∑ i ∈ a, f i z 
goal: UpperSemicontinuous fun z => ∑ i ∈ a, f i z

full_name: upperSemicontinuousWithinAt_ciInf
code: theorem upperSemicontinuousWithinAt_ciInf {f : ι → α → δ'}
    (bdd : ∀ᶠ y in 𝓝[s] x, BddBelow (range fun i => f i y))
    (h : ∀ i, UpperSemicontinuousWithinAt (f i) s x) :
    UpperSemicontinuousWithinAt (fun x' => ⨅ i, f i x') s x 
goal: UpperSemicontinuousWithinAt (fun x' => ⨅ i, f i x') s x

full_name: upperSemicontinuousWithinAt_iInf
code: theorem upperSemicontinuousWithinAt_iInf {f : ι → α → δ}
    (h : ∀ i, UpperSemicontinuousWithinAt (f i) s x) :
    UpperSemicontinuousWithinAt (fun x' => ⨅ i, f i x') s x 
goal: UpperSemicontinuousWithinAt (fun x' => ⨅ i, f i x') s x

full_name: upperSemicontinuousWithinAt_biInf
code: theorem upperSemicontinuousWithinAt_biInf {p : ι → Prop} {f : ∀ i, p i → α → δ}
    (h : ∀ i hi, UpperSemicontinuousWithinAt (f i hi) s x) :
    UpperSemicontinuousWithinAt (fun x' => ⨅ (i) (hi), f i hi x') s x 
goal: UpperSemicontinuousWithinAt (fun x' => ⨅ i, ⨅ (hi : p i), f i hi x') s x

full_name: upperSemicontinuousAt_ciInf
code: theorem upperSemicontinuousAt_ciInf {f : ι → α → δ'}
    (bdd : ∀ᶠ y in 𝓝 x, BddBelow (range fun i => f i y)) (h : ∀ i, UpperSemicontinuousAt (f i) x) :
    UpperSemicontinuousAt (fun x' => ⨅ i, f i x') x 
goal: UpperSemicontinuousAt (fun x' => ⨅ i, f i x') x

full_name: upperSemicontinuousAt_iInf
code: theorem upperSemicontinuousAt_iInf {f : ι → α → δ} (h : ∀ i, UpperSemicontinuousAt (f i) x) :
    UpperSemicontinuousAt (fun x' => ⨅ i, f i x') x 
goal: UpperSemicontinuousAt (fun x' => ⨅ i, f i x') x

full_name: upperSemicontinuousAt_biInf
code: theorem upperSemicontinuousAt_biInf {p : ι → Prop} {f : ∀ i, p i → α → δ}
    (h : ∀ i hi, UpperSemicontinuousAt (f i hi) x) :
    UpperSemicontinuousAt (fun x' => ⨅ (i) (hi), f i hi x') x 
goal: UpperSemicontinuousAt (fun x' => ⨅ i, ⨅ (hi : p i), f i hi x') x

full_name: upperSemicontinuousOn_ciInf
code: theorem upperSemicontinuousOn_ciInf {f : ι → α → δ'}
    (bdd : ∀ x ∈ s, BddBelow (range fun i => f i x)) (h : ∀ i, UpperSemicontinuousOn (f i) s) :
    UpperSemicontinuousOn (fun x' => ⨅ i, f i x') s 
goal: UpperSemicontinuousOn (fun x' => ⨅ i, f i x') s

full_name: upperSemicontinuousOn_iInf
code: theorem upperSemicontinuousOn_iInf {f : ι → α → δ} (h : ∀ i, UpperSemicontinuousOn (f i) s) :
    UpperSemicontinuousOn (fun x' => ⨅ i, f i x') s 
goal: UpperSemicontinuousOn (fun x' => ⨅ i, f i x') s

full_name: upperSemicontinuousOn_biInf
code: theorem upperSemicontinuousOn_biInf {p : ι → Prop} {f : ∀ i, p i → α → δ}
    (h : ∀ i hi, UpperSemicontinuousOn (f i hi) s) :
    UpperSemicontinuousOn (fun x' => ⨅ (i) (hi), f i hi x') s 
goal: UpperSemicontinuousOn (fun x' => ⨅ i, ⨅ (hi : p i), f i hi x') s

full_name: upperSemicontinuous_ciInf
code: theorem upperSemicontinuous_ciInf {f : ι → α → δ'} (bdd : ∀ x, BddBelow (range fun i => f i x))
    (h : ∀ i, UpperSemicontinuous (f i)) : UpperSemicontinuous fun x' => ⨅ i, f i x' 
goal: UpperSemicontinuous fun x' => ⨅ i, f i x'

full_name: upperSemicontinuous_iInf
code: theorem upperSemicontinuous_iInf {f : ι → α → δ} (h : ∀ i, UpperSemicontinuous (f i)) :
    UpperSemicontinuous fun x' => ⨅ i, f i x' 
goal: UpperSemicontinuous fun x' => ⨅ i, f i x'

full_name: upperSemicontinuous_biInf
code: theorem upperSemicontinuous_biInf {p : ι → Prop} {f : ∀ i, p i → α → δ}
    (h : ∀ i hi, UpperSemicontinuous (f i hi)) :
    UpperSemicontinuous fun x' => ⨅ (i) (hi), f i hi x' 
goal: UpperSemicontinuous fun x' => ⨅ i, ⨅ (hi : p i), f i hi x'

full_name: continuousWithinAt_iff_lower_upperSemicontinuousWithinAt
code: theorem continuousWithinAt_iff_lower_upperSemicontinuousWithinAt {f : α → γ} :
    ContinuousWithinAt f s x ↔
      LowerSemicontinuousWithinAt f s x ∧ UpperSemicontinuousWithinAt f s x 
goal: ContinuousWithinAt f s x ↔ LowerSemicontinuousWithinAt f s x ∧ UpperSemicontinuousWithinAt f s x

full_name: continuousAt_iff_lower_upperSemicontinuousAt
code: theorem continuousAt_iff_lower_upperSemicontinuousAt {f : α → γ} :
    ContinuousAt f x ↔ LowerSemicontinuousAt f x ∧ UpperSemicontinuousAt f x 
goal: ContinuousAt f x ↔ LowerSemicontinuousAt f x ∧ UpperSemicontinuousAt f x

full_name: continuousOn_iff_lower_upperSemicontinuousOn
code: theorem continuousOn_iff_lower_upperSemicontinuousOn {f : α → γ} :
    ContinuousOn f s ↔ LowerSemicontinuousOn f s ∧ UpperSemicontinuousOn f s 
goal: ContinuousOn f s ↔ LowerSemicontinuousOn f s ∧ UpperSemicontinuousOn f s

full_name: continuous_iff_lower_upperSemicontinuous
code: theorem continuous_iff_lower_upperSemicontinuous {f : α → γ} :
    Continuous f ↔ LowerSemicontinuous f ∧ UpperSemicontinuous f 
goal: Continuous f ↔ LowerSemicontinuous f ∧ UpperSemicontinuous f