Built with Alectryon. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+πŸ–±οΈ to focus. On Mac, use ⌘ instead of Ctrl.
Hover-Settings: Show types: Show goals:
import Mathlib

-- https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/API.2Ftactic.20for.20subspace.20topology

example: βˆ€ (s t : Set ℝ), IsClosed s β†’ closure (s ∩ t) ∩ t βŠ† s ∩ t
example
(
s: Set ℝ
s
t: Set ℝ
t
:
Set: Type β†’ Type
Set
ℝ: Type
ℝ
) (
hs: IsClosed s
hs
:
IsClosed: {X : Type} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Prop
IsClosed
s: Set ℝ
s
) :
closure: {X : Type} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Set X
closure
(
s: Set ℝ
s
∩
t: Set ℝ
t
) ∩
t: Set ℝ
t
βŠ†
s: Set ℝ
s
∩
t: Set ℝ
t
:=

Goals accomplished! πŸ™
s, t: Set ℝ
hs: IsClosed s

closure (s ∩ t) ∩ t βŠ† s
s, t: Set ℝ
hs: IsClosed s
x: ℝ
hx: x ∈ closure (s ∩ t) ∩ t

x ∈ s
s, t: Set ℝ
hs: IsClosed s
x: ℝ
hx: x ∈ closure (s ∩ t) ∩ t

x ∈ s
⟨hxst, : x ∈ closure (s ∩ t) ∩ t
Warning: unused variable `hxt` note: this linter can be disabled with `set_option linter.unusedVariables false`
s, t: Set ℝ
hs: IsClosed s
x: ℝ
hx: x ∈ closure (s ∩ t) ∩ t

x ∈ s
s, t: Set ℝ
hs: IsClosed s
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t

intro
x ∈ s
s, t: Set ℝ
hs: IsClosed s
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t

intro
x ∈ s

Goals accomplished! πŸ™
s, t: Set ℝ
hs: IsClosed s
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t

closure (s ∩ t) βŠ† s
s, t: Set ℝ
hs: IsClosed s
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t

s ∩ t βŠ† s
s, t: Set ℝ
hs: IsClosed s
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t

s ∩ t βŠ† s

Goals accomplished! πŸ™

Goals accomplished! πŸ™
example: βˆ€ (s t : Set ℝ), IsClosed (s ∩ t) β†’ closure (s ∩ t) ∩ t βŠ† s ∩ t
example
(
s: Set ℝ
s
t: Set ℝ
t
:
Set: Type β†’ Type
Set
ℝ: Type
ℝ
) (
hst: IsClosed (s ∩ t)
hst
:
IsClosed: {X : Type} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Prop
IsClosed
(
s: Set ℝ
s
∩
t: Set ℝ
t
)) :
closure: {X : Type} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Set X
closure
(
s: Set ℝ
s
∩
t: Set ℝ
t
) ∩
t: Set ℝ
t
βŠ†
s: Set ℝ
s
∩
t: Set ℝ
t
:=

Goals accomplished! πŸ™
s, t: Set ℝ
hst: IsClosed (s ∩ t)

closure (s ∩ t) ∩ t βŠ† s
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hx: x ∈ closure (s ∩ t) ∩ t

x ∈ s
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hx: x ∈ closure (s ∩ t) ∩ t

x ∈ s
⟨hxst, : x ∈ closure (s ∩ t) ∩ t
Warning: unused variable `hxt` note: this linter can be disabled with `set_option linter.unusedVariables false`
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hx: x ∈ closure (s ∩ t) ∩ t

x ∈ s
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t

intro
x ∈ s
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t

intro
x ∈ s
Warning: unused variable `hclosed` note: this linter can be disabled with `set_option linter.unusedVariables false`
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t

intro
x ∈ s
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t

intro
x ∈ s

Goals accomplished! πŸ™

Goals accomplished! πŸ™
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t
hclosed: IsClosed (closure (s ∩ t))

intro
x ∈ s

Goals accomplished! πŸ™

Goals accomplished! πŸ™
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t
hclosed: IsClosed (closure (s ∩ t))
hsub: s ∩ t βŠ† s

intro
x ∈ s
Warning: unused variable `hsub'` note: this linter can be disabled with `set_option linter.unusedVariables false`
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t
hclosed: IsClosed (closure (s ∩ t))
hsub: s ∩ t βŠ† s

intro
x ∈ s
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t
hclosed: IsClosed (closure (s ∩ t))
hsub: s ∩ t βŠ† s

intro
x ∈ s

Goals accomplished! πŸ™

Goals accomplished! πŸ™
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t
hclosed: IsClosed (closure (s ∩ t))
hsub: s ∩ t βŠ† s
hsub': s ∩ t βŠ† closure (s ∩ t)

intro
x ∈ s

Goals accomplished! πŸ™
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t
hclosed: IsClosed (closure (s ∩ t))
hsub: s ∩ t βŠ† s
hsub': s ∩ t βŠ† closure (s ∩ t)

closure (s ∩ t) βŠ† s ∩ t
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
hxt: x ∈ t
hclosed: IsClosed (closure (s ∩ t))
hsub: s ∩ t βŠ† s
hsub': s ∩ t βŠ† closure (s ∩ t)

s ∩ t βŠ† s ∩ t

Goals accomplished! πŸ™

Goals accomplished! πŸ™

Goals accomplished! πŸ™
example: βˆ€ (s t : Set ℝ), IsClosed (s ∩ t) β†’ closure (s ∩ t) ∩ t βŠ† s ∩ t
example
(
s: Set ℝ
s
t: Set ℝ
t
:
Set: Type β†’ Type
Set
ℝ: Type
ℝ
) (
hst: IsClosed (s ∩ t)
hst
:
IsClosed: {X : Type} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Prop
IsClosed
(
s: Set ℝ
s
∩
t: Set ℝ
t
)) :
closure: {X : Type} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Set X
closure
(
s: Set ℝ
s
∩
t: Set ℝ
t
) ∩
t: Set ℝ
t
βŠ†
s: Set ℝ
s
∩
t: Set ℝ
t
:=

Goals accomplished! πŸ™
s, t: Set ℝ
hst: IsClosed (s ∩ t)

closure (s ∩ t) ∩ t βŠ† s
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hx: x ∈ closure (s ∩ t) ∩ t

x ∈ s
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t

intro
x ∈ s
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t

intro
x ∈ s

Goals accomplished! πŸ™

Goals accomplished! πŸ™
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s

intro
x ∈ s

Goals accomplished! πŸ™
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s

closure (s ∩ t) βŠ† s ∩ t
s, t: Set ℝ
hst: IsClosed (s ∩ t)
x: ℝ
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s

s ∩ t βŠ† s ∩ t

Goals accomplished! πŸ™

Goals accomplished! πŸ™

Goals accomplished! πŸ™
variable {
X: Type u_1
X
} [
TopologicalSpace: Type ?u.5568 β†’ Type ?u.5568
TopologicalSpace
X: Type ?u.5568
X
] def
restrict: {X : Type u_1} β†’ (A : Set X) β†’ Set X β†’ Set ↑A
restrict
(
A: Set X
A
:
Set: Type u_1 β†’ Type u_1
Set
X: Type u_1
X
) :
Set: Type u_1 β†’ Type u_1
Set
X: Type u_1
X
β†’
Set: Type u_1 β†’ Type u_1
Set
A: Set X
A
:= fun
B: Set X
B
↦ {
x: ↑A
x
| ↑
x: ↑A
x
∈
B: Set X
B
} -- @[simp] -- lemma restrict_coe {A : Set X} ( C : Set X) : (Subtype.val ⁻¹' C : Set A) = (restrict A C) := rfl
example: βˆ€ {X : Type u_1} (s t : Set X), restrict t s = Subtype.val ⁻¹' s
example
(
s: Set X
s
t: Set X
t
:
Set: Type u_1 β†’ Type u_1
Set
X: Type u_1
X
) :
restrict: {X : Type u_1} β†’ (A : Set X) β†’ Set X β†’ Set ↑A
restrict
t: Set X
t
s: Set X
s
= (
Subtype.val: {Ξ± : Type u_1} β†’ {p : Ξ± β†’ Prop} β†’ Subtype p β†’ Ξ±
Subtype.val
⁻¹'
s: Set X
s
:
Set: Type u_1 β†’ Type u_1
Set
t: Set X
t
) :=

Goals accomplished! πŸ™
X: Type ?u.5842
inst✝: TopologicalSpace X
s, t: Set X
x: ↑t

h
x ∈ restrict t s ↔ x ∈ Subtype.val ⁻¹' s

Goals accomplished! πŸ™
Warning: declaration uses 'sorry'
(
s: Set X
s
t: Set X
t
:
Set: Type u_1 β†’ Type u_1
Set
X: Type u_1
X
) (
hs: IsClosed (restrict t s)
hs
:
IsClosed: {X : Type u_1} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Prop
IsClosed
(
restrict: {X : Type u_1} β†’ (A : Set X) β†’ Set X β†’ Set ↑A
restrict
t: Set X
t
s: Set X
s
)) :
closure: {X : Type u_1} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Set X
closure
(
s: Set X
s
∩
t: Set X
t
) ∩
t: Set X
t
βŠ†
s: Set X
s
∩
t: Set X
t
:=

Goals accomplished! πŸ™
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)

closure (s ∩ t) ∩ t βŠ† s
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hx: x ∈ closure (s ∩ t) ∩ t

x ∈ s
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t

intro
x ∈ s
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t

intro
x ∈ s

Goals accomplished! πŸ™

Goals accomplished! πŸ™
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s

intro
x ∈ s

Goals accomplished! πŸ™
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s

closure (restrict t s) βŠ† restrict t s
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s

restrict t s βŠ† restrict t s
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s
IsClosed (restrict t s)
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s

IsClosed (restrict t s)
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s
hsub: closure (restrict t s) βŠ† restrict t s

intro
x ∈ s

Goals accomplished! πŸ™

Goals accomplished! πŸ™
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s
hsub: closure (restrict t s) βŠ† restrict t s
hsub': restrict t s βŠ† closure (restrict t s)

intro
x ∈ s

Goals accomplished! πŸ™

Goals accomplished! πŸ™
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
hs: IsClosed (restrict t s)
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s
hsub: closure (restrict t s) βŠ† restrict t s
hsub': restrict t s βŠ† closure (restrict t s)
hsub'': s ∩ t βŠ† closure (s ∩ t)

intro
x ∈ s

Goals accomplished! πŸ™

Goals accomplished! πŸ™
-- have hq : (restrict t s) βŠ† t := sorry
X: Type ?u.9951
inst✝: TopologicalSpace X
s, t: Set X
x: X
hxst: x ∈ closure (s ∩ t)
right✝: x ∈ t
h: s ∩ t βŠ† s
hsub: closure (restrict t s) βŠ† restrict t s
hsub': restrict t s βŠ† closure (restrict t s)
hsub'': s ∩ t βŠ† closure (s ∩ t)
he: restrict t s = closure (restrict t s)
y: Set X
hy: IsOpen y
hy': Subtype.val ⁻¹' y = (restrict t s)ᢜ

intro.mk.intro.intro
x ∈ s
-- have h' : (s ∩ t) βŠ† (restrict t s) := by -- rw?

Goals accomplished! πŸ™

Goals accomplished! πŸ™
-- example (s t : Set X) (hs : IsClosed (Subtype.val ⁻¹' s : Set t)) : closure (s ∩ t) ∩ t βŠ† s ∩ t := by -- suffices : closure (Subtype.val ⁻¹' s : Set t) βŠ† (Subtype.val ⁻¹' s : Set t) -- Β· convert Set.image_subset Subtype.val this <;> simp [embedding_subtype_val.closure_eq_preimage_closure_image] -- rwa [IsClosed.closure_subset_iff] variable {Ξ± : Type u} {Ξ² : Type v} def image (f : Ξ± β†’ Ξ²) (s : Set Ξ±) : Set Ξ² := {f x | x ∈ s} def preimage (f : Ξ± β†’ Ξ²) (s : Set Ξ²) : Set Ξ± := { x | f x ∈ s } variable (s t : Set X) in
IsClosed (Subtype.val ⁻¹' s) : Prop
IsClosed: {X : Type u_1} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Prop
IsClosed
(
Set.preimage: {Ξ± Ξ² : Type u_1} β†’ (Ξ± β†’ Ξ²) β†’ Set Ξ² β†’ Set Ξ±
Set.preimage
Subtype.val: {Ξ± : Type u_1} β†’ {p : Ξ± β†’ Prop} β†’ Subtype p β†’ Ξ±
Subtype.val
s: Set X
s
)
Warning: declaration uses 'sorry'
(
s: Set X
s
t: Set X
t
:
Set: Type u_1 β†’ Type u_1
Set
X: Type u_1
X
) (
hs: IsClosed (Subtype.val ⁻¹' s)
hs
:
IsClosed: {X : Type u_1} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Prop
IsClosed
(
Subtype.val: {Ξ± : Type u_1} β†’ {p : Ξ± β†’ Prop} β†’ Subtype p β†’ Ξ±
Subtype.val
⁻¹'
s: Set X
s
:
Set: Type u_1 β†’ Type u_1
Set
t: Set X
t
)) :
closure: {X : Type u_1} β†’ [inst : TopologicalSpace X] β†’ Set X β†’ Set X
closure
(
s: Set X
s
∩
t: Set X
t
) ∩
t: Set X
t
βŠ†
s: Set X
s
∩
t: Set X
t
:=

Goals accomplished! πŸ™

Goals accomplished! πŸ™

Goals accomplished! πŸ™
-- example (s t : Set ℝ) (hs : IsOpen s): closure (s ∩ t) ∩ t βŠ† s ∩ t := by -- simp only [Set.subset_inter_iff, Set.inter_subset_right, and_true] -- intro x hx -- obtain ⟨hxst, hxt⟩ := hx -- rw [mem_closure_iff] at hxst -- have h := hxst s hs -- have he : (s ∩ (s ∩ t)) = s ∩ t := by -- simp only [Set.inter_eq_right, Set.inter_subset_left] -- have hne (hu: Set.Nonempty (s ∩ t)) : Set.Nonempty (s ∩ (s ∩ t)) := by -- rw [he] -- exact hu -- done -- open Set -- example (s t : Set ℝ) : closure (s ∩ t) ∩ t βŠ† s ∩ t := by -- rw [← Subtype.image_preimage_val, ← Subtype.image_preimage_val, -- image_subset_image_iff Subtype.val_injective] -- intros t ht -- rw [mem_preimage, ← closure_subtype] at ht -- revert ht t -- apply IsClosed.closure_subset