Theorem: Topology.IsScott.scottContinuous_iff_continuous
File: Mathlib/Topology/Order/ScottTopology.lean

tactic: refine ⟨fun h ↦ continuous_def.2 fun u hu ↦ ?_, ?_⟩
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
⊢ ScottContinuous f ↔ Continuous f
state_after: case refine_1
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
h : ScottContinuous f
u : Set β
hu : IsOpen u
⊢ IsOpen (f ⁻¹' u)

case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
⊢ Continuous f → ScottContinuous f

tactic: rw [isOpen_iff_isUpperSet_and_dirSupInacc]
state_before: case refine_1
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
h : ScottContinuous f
u : Set β
hu : IsOpen u
⊢ IsOpen (f ⁻¹' u)
state_after: case refine_1
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
h : ScottContinuous f
u : Set β
hu : IsOpen u
⊢ IsUpperSet (f ⁻¹' u) ∧ DirSupInacc (f ⁻¹' u)

tactic: exact ⟨(isUpperSet_of_isOpen hu).preimage h.monotone, fun _ hd₁ hd₂ _ hd₃ ha ↦
  image_inter_nonempty_iff.mp <| (isOpen_iff_isUpperSet_and_dirSupInacc.mp hu).2 (hd₁.image f)
    (directedOn_image.mpr (hd₂.mono @(h.monotone))) (h hd₁ hd₂ hd₃) ha⟩
state_before: case refine_1
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
h : ScottContinuous f
u : Set β
hu : IsOpen u
⊢ IsUpperSet (f ⁻¹' u) ∧ DirSupInacc (f ⁻¹' u)
state_after: no goals

tactic: refine fun hf _ d₁ d₂ _ d₃ ↦ ⟨(monotone_of_continuous hf).mem_upperBounds_image d₃.1,
  fun b hb ↦ ?_⟩
state_before: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
⊢ Continuous f → ScottContinuous f
state_after: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
⊢ f x✝ ≤ b

tactic: by_contra h
state_before: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
⊢ f x✝ ≤ b
state_after: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
⊢ False

tactic: let u := (Iic b)ᶜ
state_before: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
⊢ False
state_after: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
⊢ False

tactic: have hu : IsOpen (f ⁻¹' u) := (isOpen_compl_iff.2 isClosed_Iic).preimage hf
state_before: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
⊢ False
state_after: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
hu : IsOpen (f ⁻¹' u)
⊢ False

tactic: rw [isOpen_iff_isUpperSet_and_dirSupInacc] at hu
state_before: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
hu : IsOpen (f ⁻¹' u)
⊢ False
state_after: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
hu : IsUpperSet (f ⁻¹' u) ∧ DirSupInacc (f ⁻¹' u)
⊢ False

tactic: obtain ⟨c, hcd, hfcb⟩ := hu.2 d₁ d₂ d₃ h
state_before: case refine_2
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
hu : IsUpperSet (f ⁻¹' u) ∧ DirSupInacc (f ⁻¹' u)
⊢ False
state_after: case refine_2.intro.intro
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
hu : IsUpperSet (f ⁻¹' u) ∧ DirSupInacc (f ⁻¹' u)
c : α
hcd : c ∈ x✝¹
hfcb : c ∈ f ⁻¹' u
⊢ False

tactic: simp [upperBounds] at hb
state_before: case refine_2.intro.intro
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
hb : b ∈ upperBounds (f '' x✝¹)
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
hu : IsUpperSet (f ⁻¹' u) ∧ DirSupInacc (f ⁻¹' u)
c : α
hcd : c ∈ x✝¹
hfcb : c ∈ f ⁻¹' u
⊢ False
state_after: case refine_2.intro.intro
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
hu : IsUpperSet (f ⁻¹' u) ∧ DirSupInacc (f ⁻¹' u)
c : α
hcd : c ∈ x✝¹
hfcb : c ∈ f ⁻¹' u
hb : ∀ a ∈ x✝¹, f a ≤ b
⊢ False

tactic: exact hfcb <| hb _ hcd
state_before: case refine_2.intro.intro
α : Type u_1
β : Type u_2
inst✝⁵ : Preorder α
inst✝⁴ : TopologicalSpace α
inst✝³ : IsScott α
s : Set α
a : α
inst✝² : Preorder β
inst✝¹ : TopologicalSpace β
inst✝ : IsScott β
f : α → β
hf : Continuous f
x✝¹ : Set α
d₁ : x✝¹.Nonempty
d₂ : DirectedOn (fun x x_1 => x ≤ x_1) x✝¹
x✝ : α
d₃ : IsLUB x✝¹ x✝
b : β
h : ¬f x✝ ≤ b
u : Set β := (Iic b)ᶜ
hu : IsUpperSet (f ⁻¹' u) ∧ DirSupInacc (f ⁻¹' u)
c : α
hcd : c ∈ x✝¹
hfcb : c ∈ f ⁻¹' u
hb : ∀ a ∈ x✝¹, f a ≤ b
⊢ False
state_after: no goals