internlm/Lean-Github huggingface dataset:
Theorem: UpperLowerContinuous.open_basis
Proof state before:
case refine_2.h.mpr
x : ℝ
a✝ : x ∈ Set.univ
⊢ ∃ t ∈ open_intervals, x ∈ t
Tactic:
use Set.Ioo (x-1) (x+1)
Proof state after:
case h
x : ℝ
a✝ : x ∈ Set.univ
⊢ Set.Ioo (x - 1) (x + 1) ∈ open_intervals ∧ x ∈ Set.Ioo (x - 1) (x + 1)
Theorem: UpperLowerContinuous.open_basis
Proof state before:
case h
x : ℝ
a✝ : x ∈ Set.univ
⊢ Set.Ioo (x - 1) (x + 1) ∈ open_intervals ∧ x ∈ Set.Ioo (x - 1) (x + 1)
Tactic:
constructor
Proof state after:
case h.left
x : ℝ
a✝ : x ∈ Set.univ
⊢ Set.Ioo (x - 1) (x + 1) ∈ open_intervals

case h.right
x : ℝ
a✝ : x ∈ Set.univ
⊢ x ∈ Set.Ioo (x - 1) (x + 1)
Theorem: UpperLowerContinuous.open_basis
Proof state before:
case h.left
x : ℝ
a✝ : x ∈ Set.univ
⊢ Set.Ioo (x - 1) (x + 1) ∈ open_intervals
Tactic:
exact ⟨x-1, x+1, rfl⟩
Proof state after:
no goals
Theorem: UpperLowerContinuous.open_basis
Proof state before:
case h.right
x : ℝ
a✝ : x ∈ Set.univ
⊢ x ∈ Set.Ioo (x - 1) (x + 1)
Tactic:
simp
Proof state after:
no goals
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
⊢ Continuous f
Tactic:
apply continuous_generateFrom_iff.mpr
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
⊢ ∀ s ∈ open_intervals, IsOpen (f ⁻¹' s)
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
⊢ ∀ s ∈ open_intervals, IsOpen (f ⁻¹' s)
Tactic:
intro ab hab
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
hab : ab ∈ open_intervals
⊢ IsOpen (f ⁻¹' ab)
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
hab : ab ∈ open_intervals
⊢ IsOpen (f ⁻¹' ab)
Tactic:
obtain ⟨a,b, hab⟩ := hab
Proof state after:
case intro.intro
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
⊢ IsOpen (f ⁻¹' ab)
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case intro.intro
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
h6co : ∀ c ∈ f ⁻¹' ab, ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
h1 : ∀ c ∈ f ⁻¹' ab, ∃ t ∈ open_intervals, c ∈ t ∧ t ⊆ f ⁻¹' ab
⊢ IsOpen (f ⁻¹' ab)
Tactic:
exact
   (@TopologicalSpace.IsTopologicalBasis.isOpen_iff ℝ tₛ (f ⁻¹' ab)
     open_intervals open_basis).mpr h1
Proof state after:
no goals
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
⊢ ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Tactic:
intro c hc
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Tactic:
have h2 : IsOpen[tᵤ] (Set.Ioc a (f c)) := by
  apply TopologicalSpace.isOpen_generateFrom_of_mem
  exact ⟨a, f c, rfl⟩
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Tactic:
have h3 : IsOpen[tᵤ] (f ⁻¹' (Set.Ioc a (f c))) := continuous_def.mp huc _ h2
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Tactic:
have h4 : c ∈ f ⁻¹' Set.Ioc a (f c) := by aesop
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Tactic:
have h5 :=
 (@TopologicalSpace.IsTopologicalBasis.isOpen_iff _ tᵤ _
   upper_intervals upper_basis).mp h3 c h4
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
h5 : ∃ t ∈ upper_intervals, c ∈ t ∧ t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
h5 : ∃ t ∈ upper_intervals, c ∈ t ∧ t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Tactic:
obtain ⟨t, ⟨a', c', hac'⟩, htc, ht⟩ := h5
Proof state after:
case intro.intro.intro.intro.intro
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ t
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case intro.intro.intro.intro.intro
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ t
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Tactic:
use a'
Proof state after:
case h
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ t
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case h
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ t
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Tactic:
rw [←hac'] at htc
Proof state after:
case h
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case h
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
Tactic:
constructor
Proof state after:
case h.left
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c)

case h.right
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ a' < c ∧ a < f c
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ IsOpen (Set.Ioc a (f c))
Tactic:
apply TopologicalSpace.isOpen_generateFrom_of_mem
Proof state after:
case hs
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ Set.Ioc a (f c) ∈ upper_intervals
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case hs
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ Set.Ioc a (f c) ∈ upper_intervals
Tactic:
exact ⟨a, f c, rfl⟩
Proof state after:
no goals
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
⊢ c ∈ f ⁻¹' Set.Ioc a (f c)
Tactic:
aesop
Proof state after:
no goals
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case h.left
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c)
Tactic:
intro x hx
Proof state after:
case h.left
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
x : ℝ
hx : x ∈ Set.Ioc a' c
⊢ x ∈ f ⁻¹' Set.Ioc a (f c)
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case h.left
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
x : ℝ
hx : x ∈ Set.Ioc a' c
⊢ x ∈ f ⁻¹' Set.Ioc a (f c)
Tactic:
have h7 : x ∈ Set.Ioc a' c' := ⟨hx.1, hx.2.trans htc.2⟩
Proof state after:
case h.left
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
x : ℝ
hx : x ∈ Set.Ioc a' c
h7 : x ∈ Set.Ioc a' c'
⊢ x ∈ f ⁻¹' Set.Ioc a (f c)
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case h.left
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
x : ℝ
hx : x ∈ Set.Ioc a' c
h7 : x ∈ Set.Ioc a' c'
⊢ x ∈ f ⁻¹' Set.Ioc a (f c)
Tactic:
rw [hac'] at h7
Proof state after:
case h.left
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
x : ℝ
hx : x ∈ Set.Ioc a' c
h7 : x ∈ t
⊢ x ∈ f ⁻¹' Set.Ioc a (f c)
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case h.left
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
x : ℝ
hx : x ∈ Set.Ioc a' c
h7 : x ∈ t
⊢ x ∈ f ⁻¹' Set.Ioc a (f c)
Tactic:
exact ht h7
Proof state after:
no goals
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case h.right
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ioc a (f c))
h3 : IsOpen (f ⁻¹' Set.Ioc a (f c))
h4 : c ∈ f ⁻¹' Set.Ioc a (f c)
t : Set ℝ
a' c' : ℝ
hac' : Set.Ioc a' c' = t
htc : c ∈ Set.Ioc a' c'
ht : t ⊆ f ⁻¹' Set.Ioc a (f c)
⊢ a' < c ∧ a < f c
Tactic:
exact ⟨ htc.1, h4.1 ⟩
Proof state after:
no goals
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
⊢ ∀ c ∈ f ⁻¹' ab, ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Tactic:
intro c hc
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Tactic:
have h2 : IsOpen[tₗ] (Set.Ico (f c) b) := by
  apply TopologicalSpace.isOpen_generateFrom_of_mem
  exact ⟨f c, b, rfl⟩
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Tactic:
have h3 : IsOpen[tₗ] (f ⁻¹' (Set.Ico (f c) b)) := continuous_def.mp hlc _ h2
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Tactic:
have h4 : c ∈ f ⁻¹' Set.Ico (f c) b := by aesop
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Tactic:
have h5 :=
 (@TopologicalSpace.IsTopologicalBasis.isOpen_iff _ tₗ _
   lower_intervals lower_basis).mp h3 c h4
Proof state after:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
h5 : ∃ t ∈ lower_intervals, c ∈ t ∧ t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
h5 : ∃ t ∈ lower_intervals, c ∈ t ∧ t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Tactic:
obtain ⟨t, ⟨c', b', hcb'⟩, htc, ht⟩ := h5
Proof state after:
case intro.intro.intro.intro.intro
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
t : Set ℝ
c' b' : ℝ
hcb' : Set.Ico c' b' = t
htc : c ∈ t
ht : t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case intro.intro.intro.intro.intro
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
t : Set ℝ
c' b' : ℝ
hcb' : Set.Ico c' b' = t
htc : c ∈ t
ht : t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ ∃ b', Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Tactic:
use b'
Proof state after:
case h
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
t : Set ℝ
c' b' : ℝ
hcb' : Set.Ico c' b' = t
htc : c ∈ t
ht : t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case h
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
t : Set ℝ
c' b' : ℝ
hcb' : Set.Ico c' b' = t
htc : c ∈ t
ht : t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Tactic:
rw [←hcb'] at htc
Proof state after:
case h
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
t : Set ℝ
c' b' : ℝ
hcb' : Set.Ico c' b' = t
htc : c ∈ Set.Ico c' b'
ht : t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case h
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
t : Set ℝ
c' b' : ℝ
hcb' : Set.Ico c' b' = t
htc : c ∈ Set.Ico c' b'
ht : t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b ∧ c < b' ∧ f c < b
Tactic:
constructor
Proof state after:
case h.left
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
t : Set ℝ
c' b' : ℝ
hcb' : Set.Ico c' b' = t
htc : c ∈ Set.Ico c' b'
ht : t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ Set.Ico c b' ⊆ f ⁻¹' Set.Ico (f c) b

case h.right
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
h2 : IsOpen (Set.Ico (f c) b)
h3 : IsOpen (f ⁻¹' Set.Ico (f c) b)
h4 : c ∈ f ⁻¹' Set.Ico (f c) b
t : Set ℝ
c' b' : ℝ
hcb' : Set.Ico c' b' = t
htc : c ∈ Set.Ico c' b'
ht : t ⊆ f ⁻¹' Set.Ico (f c) b
⊢ c < b' ∧ f c < b
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ IsOpen (Set.Ico (f c) b)
Tactic:
apply TopologicalSpace.isOpen_generateFrom_of_mem
Proof state after:
case hs
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ Set.Ico (f c) b ∈ lower_intervals
Theorem: UpperLowerContinuous.continuous_of_upper_lower_continuous
Proof state before:
case hs
f : ℝ → ℝ
huc : Continuous f
hlc : Continuous f
ab : Set ℝ
a b : ℝ
hab : Set.Ioo a b = ab
h6oc : ∀ c ∈ f ⁻¹' ab, ∃ a', Set.Ioc a' c ⊆ f ⁻¹' Set.Ioc a (f c) ∧ a' < c ∧ a < f c
c : ℝ
hc : c ∈ f ⁻¹' ab
⊢ Set.Ico (f c) b ∈ lower_intervals
Tactic:
exact ⟨f c, b, rfl⟩
Proof state after:
no goals