Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+πŸ–±οΈto focus. On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2018 Johannes HΓΆlzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes HΓΆlzl, Floris van Doorn, Gabriel Ebner, Yury Kudryashov

! This file was ported from Lean 3 source module data.nat.lattice
! leanprover-community/mathlib commit 52fa514ec337dd970d71d8de8d0fd68b455a1e54
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Data.Nat.Interval
import Mathlib.Order.ConditionallyCompleteLattice.Finset

/-!
# Conditionally complete linear order structure on `β„•`

In this file we

* define a `ConditionallyCcompleteLinearOrderBot` structure on `β„•`;
* prove a few lemmas about `iSup`/`iInf`/`Set.iUnion`/`Set.iInter` and natural numbers.
-/


open Set

namespace Nat

open Classical

noncomputable 
instance: InfSet β„•
instance
:
InfSet: Type ?u.2 β†’ Type ?u.2
InfSet
β„•: Type
β„•
:= ⟨fun
s: ?m.10
s
↦ if
h: ?m.120
h
: βˆƒ
n: ?m.15
n
,
n: ?m.15
n
∈
s: ?m.10
s
then @
Nat.find: {p : β„• β†’ Prop} β†’ [inst : DecidablePred p] β†’ (βˆƒ n, p n) β†’ β„•
Nat.find
(fun
n: ?m.123
n
↦
n: ?m.123
n
∈
s: ?m.10
s
) _
h: ?m.120
h
else
0: ?m.160
0
⟩ noncomputable
instance: SupSet β„•
instance
:
SupSet: Type ?u.191 β†’ Type ?u.191
SupSet
β„•: Type
β„•
:= ⟨fun
s: ?m.199
s
↦ if
h: ?m.1430
h
: βˆƒ
n: ?m.204
n
, βˆ€
a: ?m.207
a
∈
s: ?m.199
s
,
a: ?m.207
a
≀
n: ?m.204
n
then @
Nat.find: {p : β„• β†’ Prop} β†’ [inst : DecidablePred p] β†’ (βˆƒ n, p n) β†’ β„•
Nat.find
(fun
n: ?m.902
n
↦ βˆ€
a: ?m.905
a
∈
s: ?m.199
s
,
a: ?m.905
a
≀
n: ?m.902
n
) _
h: ?m.899
h
else
0: ?m.1433
0
⟩ theorem
sInf_def: βˆ€ {s : Set β„•} (h : Set.Nonempty s), sInf s = Nat.find h
sInf_def
{s :
Set: Type ?u.1477 β†’ Type ?u.1477
Set
β„•: Type
β„•
} (h : s.
Nonempty: {Ξ± : Type ?u.1480} β†’ Set Ξ± β†’ Prop
Nonempty
) :
sInf: {Ξ± : Type ?u.1488} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s = @
Nat.find: {p : β„• β†’ Prop} β†’ [inst : DecidablePred p] β†’ (βˆƒ n, p n) β†’ β„•
Nat.find
(fun
n: ?m.1500
n
↦
n: ?m.1500
n
∈ s) _ h :=
dif_pos: βˆ€ {c : Prop} {h : Decidable c} (hc : c) {Ξ± : Sort ?u.1541} {t : c β†’ Ξ±} {e : Β¬c β†’ Ξ±}, dite c t e = t hc
dif_pos
_: ?m.1542
_
#align nat.Inf_def
Nat.sInf_def: βˆ€ {s : Set β„•} (h : Set.Nonempty s), sInf s = Nat.find h
Nat.sInf_def
theorem
sSup_def: βˆ€ {s : Set β„•} (h : βˆƒ n, βˆ€ (a : β„•), a ∈ s β†’ a ≀ n), sSup s = Nat.find h
sSup_def
{s :
Set: Type ?u.1578 β†’ Type ?u.1578
Set
β„•: Type
β„•
} (
h: βˆƒ n, βˆ€ (a : β„•), a ∈ s β†’ a ≀ n
h
: βˆƒ
n: ?m.1584
n
, βˆ€
a: ?m.1587
a
∈ s,
a: ?m.1587
a
≀
n: ?m.1584
n
) :
sSup: {Ξ± : Type ?u.1638} β†’ [self : SupSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sSup
s = @
Nat.find: {p : β„• β†’ Prop} β†’ [inst : DecidablePred p] β†’ (βˆƒ n, p n) β†’ β„•
Nat.find
(fun
n: ?m.1650
n
↦ βˆ€
a: ?m.1653
a
∈ s,
a: ?m.1653
a
≀
n: ?m.1650
n
) _
h: βˆƒ n, βˆ€ (a : β„•), a ∈ s β†’ a ≀ n
h
:=
dif_pos: βˆ€ {c : Prop} {h : Decidable c} (hc : c) {Ξ± : Sort ?u.2272} {t : c β†’ Ξ±} {e : Β¬c β†’ Ξ±}, dite c t e = t hc
dif_pos
_: ?m.2273
_
#align nat.Sup_def
Nat.sSup_def: βˆ€ {s : Set β„•} (h : βˆƒ n, βˆ€ (a : β„•), a ∈ s β†’ a ≀ n), sSup s = Nat.find h
Nat.sSup_def
theorem
_root_.Set.Infinite.Nat.sSup_eq_zero: βˆ€ {s : Set β„•}, Set.Infinite s β†’ sSup s = 0
_root_.Set.Infinite.Nat.sSup_eq_zero
{s :
Set: Type ?u.2316 β†’ Type ?u.2316
Set
β„•: Type
β„•
} (h : s.
Infinite: {Ξ± : Type ?u.2319} β†’ Set Ξ± β†’ Prop
Infinite
) :
sSup: {Ξ± : Type ?u.2327} β†’ [self : SupSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sSup
s =
0: ?m.2339
0
:=
dif_neg: βˆ€ {c : Prop} {h : Decidable c} (hnc : Β¬c) {Ξ± : Sort ?u.2366} {t : c β†’ Ξ±} {e : Β¬c β†’ Ξ±}, dite c t e = e hnc
dif_neg
fun ⟨n,
hn: βˆ€ (a : β„•), a ∈ s β†’ a ≀ n
hn
⟩ ↦ let ⟨k,
hks: k ∈ s
hks
,
hk: n < k
hk
⟩ := h.
exists_gt: βˆ€ {Ξ± : Type ?u.2447} [inst : LinearOrder Ξ±] [inst_1 : LocallyFiniteOrderBot Ξ±] {s : Set Ξ±}, Set.Infinite s β†’ βˆ€ (a : Ξ±), βˆƒ b, b ∈ s ∧ a < b
exists_gt
n (
hn: βˆ€ (a : β„•), a ∈ s β†’ a ≀ n
hn
k
hks: k ∈ s
hks
).
not_lt: βˆ€ {Ξ± : Type ?u.2586} [inst : Preorder Ξ±] {a b : Ξ±}, a ≀ b β†’ Β¬b < a
not_lt
hk: n < k
hk
#align set.infinite.nat.Sup_eq_zero
Set.Infinite.Nat.sSup_eq_zero: βˆ€ {s : Set β„•}, Set.Infinite s β†’ sSup s = 0
Set.Infinite.Nat.sSup_eq_zero
@[simp] theorem
sInf_eq_zero: βˆ€ {s : Set β„•}, sInf s = 0 ↔ 0 ∈ s ∨ s = βˆ…
sInf_eq_zero
{s :
Set: Type ?u.2912 β†’ Type ?u.2912
Set
β„•: Type
β„•
} :
sInf: {Ξ± : Type ?u.2916} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s =
0: ?m.2929
0
↔
0: ?m.2959
0
∈ s ∨ s =
βˆ…: ?m.2983
βˆ…
:=

Goals accomplished! πŸ™

Goals accomplished! πŸ™

Goals accomplished! πŸ™
#align nat.Inf_eq_zero
Nat.sInf_eq_zero: βˆ€ {s : Set β„•}, sInf s = 0 ↔ 0 ∈ s ∨ s = βˆ…
Nat.sInf_eq_zero
@[simp] theorem
sInf_empty: sInf βˆ… = 0
sInf_empty
:
sInf: {Ξ± : Type ?u.4327} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
βˆ…: ?m.4331
βˆ…
=
0: ?m.4408
0
:=

Goals accomplished! πŸ™

Goals accomplished! πŸ™
#align nat.Inf_empty
Nat.sInf_empty: sInf βˆ… = 0
Nat.sInf_empty
@[simp] theorem
iInf_of_empty: βˆ€ {ΞΉ : Sort u_1} [inst : IsEmpty ΞΉ] (f : ΞΉ β†’ β„•), iInf f = 0
iInf_of_empty
{
ΞΉ: Sort u_1
ΞΉ
:
Sort _: Type ?u.4548
Sort
Sort _: Type ?u.4548
_
} [
IsEmpty: Sort ?u.4551 β†’ Prop
IsEmpty
ΞΉ: Sort ?u.4548
ΞΉ
] (
f: ΞΉ β†’ β„•
f
:
ΞΉ: Sort ?u.4548
ΞΉ
β†’
β„•: Type
β„•
) :
iInf: {Ξ± : Type ?u.4560} β†’ [inst : InfSet Ξ±] β†’ {ΞΉ : Sort ?u.4559} β†’ (ΞΉ β†’ Ξ±) β†’ Ξ±
iInf
f: ΞΉ β†’ β„•
f
=
0: ?m.4574
0
:=

Goals accomplished! πŸ™
ΞΉ: Sort u_1

inst✝: IsEmpty ι

f: ΞΉ β†’ β„•


iInf f = 0
ΞΉ: Sort u_1

inst✝: IsEmpty ι

f: ΞΉ β†’ β„•


iInf f = 0
ΞΉ: Sort u_1

inst✝: IsEmpty ι

f: ΞΉ β†’ β„•


ΞΉ: Sort u_1

inst✝: IsEmpty ι

f: ΞΉ β†’ β„•


iInf f = 0
ΞΉ: Sort u_1

inst✝: IsEmpty ι

f: ΞΉ β†’ β„•


0 = 0

Goals accomplished! πŸ™
#align nat.infi_of_empty
Nat.iInf_of_empty: βˆ€ {ΞΉ : Sort u_1} [inst : IsEmpty ΞΉ] (f : ΞΉ β†’ β„•), iInf f = 0
Nat.iInf_of_empty
theorem
sInf_mem: βˆ€ {s : Set β„•}, Set.Nonempty s β†’ sInf s ∈ s
sInf_mem
{s :
Set: Type ?u.4745 β†’ Type ?u.4745
Set
β„•: Type
β„•
} (h : s.
Nonempty: {Ξ± : Type ?u.4748} β†’ Set Ξ± β†’ Prop
Nonempty
) :
sInf: {Ξ± : Type ?u.4773} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s ∈ s :=

Goals accomplished! πŸ™

Goals accomplished! πŸ™
#align nat.Inf_mem
Nat.sInf_mem: βˆ€ {s : Set β„•}, Set.Nonempty s β†’ sInf s ∈ s
Nat.sInf_mem
theorem
not_mem_of_lt_sInf: βˆ€ {s : Set β„•} {m : β„•}, m < sInf s β†’ Β¬m ∈ s
not_mem_of_lt_sInf
{s :
Set: Type ?u.4852 β†’ Type ?u.4852
Set
β„•: Type
β„•
} {m :
β„•: Type
β„•
} (
hm: m < sInf s
hm
: m <
sInf: {Ξ± : Type ?u.4858} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s) : m βˆ‰ s :=

Goals accomplished! πŸ™
s: Set β„•

m: β„•

hm: m < sInf s


s: Set β„•

m: β„•

hm: m < sInf s

h: s = βˆ…


inl
s: Set β„•

m: β„•

hm: m < sInf s

h: s = βˆ…


inl

Goals accomplished! πŸ™

inr

inr

inr

Goals accomplished! πŸ™
#align nat.not_mem_of_lt_Inf
Nat.not_mem_of_lt_sInf: βˆ€ {s : Set β„•} {m : β„•}, m < sInf s β†’ Β¬m ∈ s
Nat.not_mem_of_lt_sInf
protected theorem
sInf_le: βˆ€ {s : Set β„•} {m : β„•}, m ∈ s β†’ sInf s ≀ m
sInf_le
{s :
Set: Type ?u.5072 β†’ Type ?u.5072
Set
β„•: Type
β„•
} {m :
β„•: Type
β„•
} (
hm: m ∈ s
hm
: m ∈ s) :
sInf: {Ξ± : Type ?u.5109} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s ≀ m :=

Goals accomplished! πŸ™
s: Set β„•

m: β„•

hm: m ∈ s


Nat.find (_ : βˆƒ x, x ∈ s) ≀ m
s: Set β„•

m: β„•

hm: m ∈ s


Nat.find (_ : βˆƒ x, x ∈ s) ≀ m

Goals accomplished! πŸ™
#align nat.Inf_le
Nat.sInf_le: βˆ€ {s : Set β„•} {m : β„•}, m ∈ s β†’ sInf s ≀ m
Nat.sInf_le
theorem
nonempty_of_pos_sInf: βˆ€ {s : Set β„•}, 0 < sInf s β†’ Set.Nonempty s
nonempty_of_pos_sInf
{s :
Set: Type ?u.5272 β†’ Type ?u.5272
Set
β„•: Type
β„•
} (
h: 0 < sInf s
h
:
0: ?m.5277
0
<
sInf: {Ξ± : Type ?u.5292} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s) : s.
Nonempty: {Ξ± : Type ?u.5324} β†’ Set Ξ± β†’ Prop
Nonempty
:=

Goals accomplished! πŸ™
s: Set β„•

h: 0 < sInf s

contra: s = βˆ…


s: Set β„•

h: 0 < sInf s

contra: s = βˆ…


s: Set β„•

h: 0 < sInf s

contra: s = βˆ…


s: Set β„•

h: 0 < sInf s

contra: s = βˆ…

h': sInf s β‰  0


s: Set β„•

h: 0 < sInf s

contra: s = βˆ…

h': sInf s β‰  0


sInf s = 0
s: Set β„•

h: 0 < sInf s

contra: s = βˆ…

h': sInf s β‰  0


sInf s = 0
s: Set β„•

h: 0 < sInf s

contra: s = βˆ…

h': sInf s β‰  0


s: Set β„•

h: 0 < sInf s

contra: s = βˆ…

h': sInf s β‰  0


s: Set β„•

h: 0 < sInf s

contra: s = βˆ…

h': sInf s β‰  0


h

Goals accomplished! πŸ™
#align nat.nonempty_of_pos_Inf
Nat.nonempty_of_pos_sInf: βˆ€ {s : Set β„•}, 0 < sInf s β†’ Set.Nonempty s
Nat.nonempty_of_pos_sInf
theorem
nonempty_of_sInf_eq_succ: βˆ€ {s : Set β„•} {k : β„•}, sInf s = k + 1 β†’ Set.Nonempty s
nonempty_of_sInf_eq_succ
{s :
Set: Type ?u.5647 β†’ Type ?u.5647
Set
β„•: Type
β„•
} {k :
β„•: Type
β„•
} (
h: sInf s = k + 1
h
:
sInf: {Ξ± : Type ?u.5653} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s = k +
1: ?m.5669
1
) : s.
Nonempty: {Ξ± : Type ?u.5732} β†’ Set Ξ± β†’ Prop
Nonempty
:=
nonempty_of_pos_sInf: βˆ€ {s : Set β„•}, 0 < sInf s β†’ Set.Nonempty s
nonempty_of_pos_sInf
(
h: sInf s = k + 1
h
.
symm: βˆ€ {Ξ± : Sort ?u.5779} {a b : Ξ±}, a = b β†’ b = a
symm
β–Έ
succ_pos: βˆ€ (n : β„•), 0 < succ n
succ_pos
k :
sInf: {Ξ± : Type ?u.5749} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s >
0: ?m.5755
0
) #align nat.nonempty_of_Inf_eq_succ
Nat.nonempty_of_sInf_eq_succ: βˆ€ {s : Set β„•} {k : β„•}, sInf s = k + 1 β†’ Set.Nonempty s
Nat.nonempty_of_sInf_eq_succ
theorem
eq_Ici_of_nonempty_of_upward_closed: βˆ€ {s : Set β„•}, Set.Nonempty s β†’ (βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s) β†’ s = Ici (sInf s)
eq_Ici_of_nonempty_of_upward_closed
{s :
Set: Type ?u.5808 β†’ Type ?u.5808
Set
β„•: Type
β„•
} (hs : s.
Nonempty: {Ξ± : Type ?u.5811} β†’ Set Ξ± β†’ Prop
Nonempty
) (
hs': βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s
hs'
: βˆ€
k₁: β„•
k₁
kβ‚‚: β„•
kβ‚‚
:
β„•: Type
β„•
,
k₁: β„•
k₁
≀
kβ‚‚: β„•
kβ‚‚
β†’
k₁: β„•
k₁
∈ s β†’
kβ‚‚: β„•
kβ‚‚
∈ s) : s =
Ici: {Ξ± : Type ?u.5888} β†’ [inst : Preorder Ξ±] β†’ Ξ± β†’ Set Ξ±
Ici
(
sInf: {Ξ± : Type ?u.5891} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s) :=
ext: βˆ€ {Ξ± : Type ?u.6023} {a b : Set Ξ±}, (βˆ€ (x : Ξ±), x ∈ a ↔ x ∈ b) β†’ a = b
ext
fun
n: ?m.6032
n
↦ ⟨fun
H: ?m.6043
H
↦
Nat.sInf_le: βˆ€ {s : Set β„•} {m : β„•}, m ∈ s β†’ sInf s ≀ m
Nat.sInf_le
H: ?m.6043
H
, fun
H: ?m.6056
H
↦
hs': βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s
hs'
(
sInf: {Ξ± : Type ?u.6058} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s)
n: ?m.6032
n
H: ?m.6056
H
(
sInf_mem: βˆ€ {s : Set β„•}, Set.Nonempty s β†’ sInf s ∈ s
sInf_mem
hs)⟩ #align nat.eq_Ici_of_nonempty_of_upward_closed
Nat.eq_Ici_of_nonempty_of_upward_closed: βˆ€ {s : Set β„•}, Set.Nonempty s β†’ (βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s) β†’ s = Ici (sInf s)
Nat.eq_Ici_of_nonempty_of_upward_closed
theorem
sInf_upward_closed_eq_succ_iff: βˆ€ {s : Set β„•}, (βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s) β†’ βˆ€ (k : β„•), sInf s = k + 1 ↔ k + 1 ∈ s ∧ Β¬k ∈ s
sInf_upward_closed_eq_succ_iff
{s :
Set: Type ?u.6106 β†’ Type ?u.6106
Set
β„•: Type
β„•
} (
hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s
hs
: βˆ€
k₁: β„•
k₁
kβ‚‚: β„•
kβ‚‚
:
β„•: Type
β„•
,
k₁: β„•
k₁
≀
kβ‚‚: β„•
kβ‚‚
β†’
k₁: β„•
k₁
∈ s β†’
kβ‚‚: β„•
kβ‚‚
∈ s) (k :
β„•: Type
β„•
) :
sInf: {Ξ± : Type ?u.6181} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
s = k +
1: ?m.6196
1
↔ k +
1: ?m.6266
1
∈ s ∧ k βˆ‰ s :=

Goals accomplished! πŸ™
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mp
sInf s = k + 1 β†’ k + 1 ∈ s ∧ Β¬k ∈ s
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mpr
k + 1 ∈ s ∧ Β¬k ∈ s β†’ sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mp
sInf s = k + 1 β†’ k + 1 ∈ s ∧ Β¬k ∈ s
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mp
sInf s = k + 1 β†’ k + 1 ∈ s ∧ Β¬k ∈ s
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mpr
k + 1 ∈ s ∧ Β¬k ∈ s β†’ sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mp
sInf s = k + 1 β†’ k + 1 ∈ s ∧ Β¬k ∈ s
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


sInf s = ?m.6334 + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
k + 1 ∈ Ici (k + 1) ∧ ¬k ∈ Ici (k + 1)
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


sInf s = ?m.6334 + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
k + 1 ≀ k + 1 ∧ Β¬k ∈ Ici (k + 1)
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


sInf s = ?m.6334 + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
k + 1 ≀ k + 1 ∧ Β¬k + 1 ≀ k
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


sInf s = ?m.6334 + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


mp
k + 1 ≀ k + 1 ∧ Β¬k + 1 ≀ k
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


sInf s = ?m.6334 + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mp
sInf s = k + 1 β†’ k + 1 ∈ s ∧ Β¬k ∈ s
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


sInf s = ?m.6334 + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


sInf s = ?m.6334 + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mp
sInf s = k + 1 β†’ k + 1 ∈ s ∧ Β¬k ∈ s
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: sInf s = k + 1


sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mp
sInf s = k + 1 β†’ k + 1 ∈ s ∧ Β¬k ∈ s

Goals accomplished! πŸ™
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mpr
k + 1 ∈ s ∧ Β¬k ∈ s β†’ sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mpr
k + 1 ∈ s ∧ Β¬k ∈ s β†’ sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: k + 1 ∈ s

H': ¬k ∈ s


mpr.intro
sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mpr
k + 1 ∈ s ∧ Β¬k ∈ s β†’ sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: k + 1 ∈ s

H': ¬k ∈ s


mpr.intro
sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: k + 1 ∈ s

H': ¬k ∈ s


mpr.intro
Nat.find (_ : βˆƒ x, x ∈ s) = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: k + 1 ∈ s

H': ¬k ∈ s


mpr.intro
sInf s = k + 1
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: k + 1 ∈ s

H': ¬k ∈ s


mpr.intro
k + 1 ∈ s ∧ βˆ€ (n : β„•), n < k + 1 β†’ Β¬n ∈ s
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•

H: k + 1 ∈ s

H': ¬k ∈ s


mpr.intro
k + 1 ∈ s ∧ βˆ€ (n : β„•), n < k + 1 β†’ Β¬n ∈ s
s: Set β„•

hs: βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s

k: β„•


mpr
k + 1 ∈ s ∧ Β¬k ∈ s β†’ sInf s = k + 1

Goals accomplished! πŸ™
#align nat.Inf_upward_closed_eq_succ_iff
Nat.sInf_upward_closed_eq_succ_iff: βˆ€ {s : Set β„•}, (βˆ€ (k₁ kβ‚‚ : β„•), k₁ ≀ kβ‚‚ β†’ k₁ ∈ s β†’ kβ‚‚ ∈ s) β†’ βˆ€ (k : β„•), sInf s = k + 1 ↔ k + 1 ∈ s ∧ Β¬k ∈ s
Nat.sInf_upward_closed_eq_succ_iff
/-- This instance is necessary, otherwise the lattice operations would be derived via `ConditionallyCompleteLinearOrderBot` and marked as noncomputable. -/
instance: Lattice β„•
instance
:
Lattice: Type ?u.7181 β†’ Type ?u.7181
Lattice
β„•: Type
β„•
:=
LinearOrder.toLattice: {Ξ± : Type ?u.7183} β†’ [o : LinearOrder Ξ±] β†’ Lattice Ξ±
LinearOrder.toLattice
noncomputable instance :
ConditionallyCompleteLinearOrderBot: Type ?u.7337 β†’ Type ?u.7337
ConditionallyCompleteLinearOrderBot
β„•: Type
β„•
:= { (
inferInstance: {Ξ± : Sort ?u.7347} β†’ [i : Ξ±] β†’ Ξ±
inferInstance
:
OrderBot: (Ξ± : Type ?u.7342) β†’ [inst : LE Ξ±] β†’ Type ?u.7342
OrderBot
β„•: Type
β„•
), (
LinearOrder.toLattice: {Ξ± : Type ?u.7364} β†’ [o : LinearOrder Ξ±] β†’ Lattice Ξ±
LinearOrder.toLattice
:
Lattice: Type ?u.7363 β†’ Type ?u.7363
Lattice
β„•: Type
β„•
), (
inferInstance: {Ξ± : Sort ?u.7409} β†’ [i : Ξ±] β†’ Ξ±
inferInstance
:
LinearOrder: Type ?u.7408 β†’ Type ?u.7408
LinearOrder
β„•: Type
β„•
) with -- sup := sSup -- Porting note: removed, unnecessary? -- inf := sInf -- Porting note: removed, unnecessary? le_csSup := fun
s: ?m.7484
s
a: ?m.7487
a
hb: ?m.7490
hb
ha: ?m.7493
ha
↦

Goals accomplished! πŸ™
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hb: BddAbove s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hb: BddAbove s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hb: BddAbove s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hb: BddAbove s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hb: BddAbove s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hb: BddAbove s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hb: BddAbove s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

hb: BddAbove s


βˆ€ (a : β„•), a ∈ s β†’ a ≀ Nat.find hb
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hb: BddAbove s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

hb: BddAbove s


βˆ€ (a : β„•), a ∈ s β†’ a ≀ Nat.find hb
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hb: BddAbove s

ha: a ∈ s



Goals accomplished! πŸ™
csSup_le := fun
s: ?m.7511
s
a: ?m.7514
a
_: ?m.7517
_
ha: ?m.7520
ha
↦

Goals accomplished! πŸ™
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: Set.Nonempty s

ha: a ∈ upperBounds s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: Set.Nonempty s

ha: a ∈ upperBounds s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: Set.Nonempty s

ha: a ∈ upperBounds s


Nat.find (_ : βˆƒ n, βˆ€ (a : β„•), a ∈ s β†’ a ≀ n) ≀ a
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: Set.Nonempty s

ha: a ∈ upperBounds s


Nat.find (_ : βˆƒ n, βˆ€ (a : β„•), a ∈ s β†’ a ≀ n) ≀ a
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: Set.Nonempty s

ha: a ∈ upperBounds s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: Set.Nonempty s

ha: a ∈ upperBounds s


Nat.find (_ : βˆƒ n, βˆ€ (a : β„•), a ∈ s β†’ a ≀ n) ≀ a
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: Set.Nonempty s

ha: a ∈ upperBounds s



Goals accomplished! πŸ™
le_csInf := fun
s: ?m.7562
s
a: ?m.7565
a
hs: ?m.7568
hs
hb: ?m.7571
hb
↦

Goals accomplished! πŸ™
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hs: Set.Nonempty s

hb: a ∈ lowerBounds s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hs: Set.Nonempty s

hb: a ∈ lowerBounds s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hs: Set.Nonempty s

hb: a ∈ lowerBounds s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hs: Set.Nonempty s

hb: a ∈ lowerBounds s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hs: Set.Nonempty s

hb: a ∈ lowerBounds s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hs: Set.Nonempty s

hb: a ∈ lowerBounds s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

hs: Set.Nonempty s

hb: a ∈ lowerBounds s



Goals accomplished! πŸ™
csInf_le := fun
s: ?m.7536
s
a: ?m.7539
a
_: ?m.7542
_
ha: ?m.7545
ha
↦

Goals accomplished! πŸ™
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: BddBelow s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: BddBelow s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: BddBelow s

ha: a ∈ s


Nat.find (_ : βˆƒ x, x ∈ s) ≀ a
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: BddBelow s

ha: a ∈ s


Nat.find (_ : βˆƒ x, x ∈ s) ≀ a
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: BddBelow s

ha: a ∈ s


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: BddBelow s

ha: a ∈ s


Nat.find (_ : βˆƒ x, x ∈ s) ≀ a
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•

s: Set β„•

a: β„•

x✝: BddBelow s

ha: a ∈ s



Goals accomplished! πŸ™
csSup_empty :=

Goals accomplished! πŸ™
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•


Nat.find (_ : βˆƒ n, (fun n => True) n) = βŠ₯
src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•


src✝²:= inferInstance: OrderBot β„•

src✝¹:= LinearOrder.toLattice: Lattice β„•

src✝:= inferInstance: LinearOrder β„•



Goals accomplished! πŸ™
} theorem
sSup_mem: βˆ€ {s : Set β„•}, Set.Nonempty s β†’ BddAbove s β†’ sSup s ∈ s
sSup_mem
{s :
Set: Type ?u.11024 β†’ Type ?u.11024
Set
β„•: Type
β„•
} (
h₁: Set.Nonempty s
h₁
: s.
Nonempty: {Ξ± : Type ?u.11027} β†’ Set Ξ± β†’ Prop
Nonempty
) (
hβ‚‚: BddAbove s
hβ‚‚
:
BddAbove: {Ξ± : Type ?u.11034} β†’ [inst : Preorder Ξ±] β†’ Set Ξ± β†’ Prop
BddAbove
s) :
sSup: {Ξ± : Type ?u.11178} β†’ [self : SupSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sSup
s ∈ s := let ⟨k, hk⟩ :=
hβ‚‚: BddAbove s
hβ‚‚
h₁: Set.Nonempty s
h₁
.
cSup_mem: βˆ€ {Ξ± : Type ?u.11250} [inst : ConditionallyCompleteLinearOrder Ξ±] {s : Set Ξ±}, Set.Nonempty s β†’ Set.Finite s β†’ sSup s ∈ s
cSup_mem
((
finite_le_nat: βˆ€ (n : β„•), Set.Finite { i | i ≀ n }
finite_le_nat
k).
subset: βˆ€ {Ξ± : Type ?u.11275} {s : Set Ξ±}, Set.Finite s β†’ βˆ€ {t : Set Ξ±}, t βŠ† s β†’ Set.Finite t
subset
hk) #align nat.Sup_mem
Nat.sSup_mem: βˆ€ {s : Set β„•}, Set.Nonempty s β†’ BddAbove s β†’ sSup s ∈ s
Nat.sSup_mem
theorem
sInf_add: βˆ€ {n : β„•} {p : β„• β†’ Prop}, n ≀ sInf { m | p m } β†’ sInf { m | p (m + n) } + n = sInf { m | p m }
sInf_add
{n :
β„•: Type
β„•
} {
p: β„• β†’ Prop
p
:
β„•: Type
β„•
β†’
Prop: Type
Prop
} (
hn: n ≀ sInf { m | p m }
hn
: n ≀
sInf: {Ξ± : Type ?u.11367} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
{
m: ?m.11375
m
|
p: β„• β†’ Prop
p
m: ?m.11375
m
}) :
sInf: {Ξ± : Type ?u.11398} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
{
m: ?m.11406
m
|
p: β„• β†’ Prop
p
(
m: ?m.11406
m
+ n) } + n =
sInf: {Ξ± : Type ?u.11451} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
{
m: ?m.11459
m
|
p: β„• β†’ Prop
p
m: ?m.11459
m
} :=

Goals accomplished! πŸ™
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }


sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }


sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf βˆ… + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
0 + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n = sInf { m | p m }


inl.inl
n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }


inl.inr
n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n = sInf { m | p m }


inl.inl
n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n = sInf { m | p m }


inl.inl
n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }


inl.inr
n = sInf { m | p m }

Goals accomplished! πŸ™
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }

hp: p (sInf { m | p m } - n + n)


inl.inr
n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }


hp
p (sInf { m | p m } - n + n)
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }

hp: p (sInf { m | p m } - n + n)


inl.inr
n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }

hp: p (sInf { m | p m } - n + n)


inl.inr
n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }


hp
p (sInf { m | p m } - n + n)

Goals accomplished! πŸ™
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }


hp
p (sInf { m | p m } - n + n)
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }


hp
p (sInf { m | p m })
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…

hnp: n < sInf { m | p m }


hp
p (sInf { m | p m })
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

h: { m | p (m + n) } = βˆ…


inl
sInf { m | p (m + n) } + n = sInf { m | p m }

Goals accomplished! πŸ™
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }


sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }


inr.intro
Nat.find (_ : βˆƒ x, x ∈ { m | p (m + n) }) + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }


inr.intro
Nat.find (_ : βˆƒ x, x ∈ { m | p (m + n) }) + n = Nat.find hp
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }


inr.intro
Nat.find (_ : βˆƒ x, x ∈ { m | p (m + n) }) + n = Nat.find hp
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }


inr.intro
Nat.find (_ : βˆƒ x, x ∈ { m | p (m + n) }) + n = Nat.find hp
n: β„•

p: β„• β†’ Prop

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }

hn: n ≀ Nat.find hp


inr.intro
Nat.find (_ : βˆƒ x, x ∈ { m | p (m + n) }) + n = Nat.find hp
n: β„•

p: β„• β†’ Prop

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }

hn: n ≀ Nat.find hp


inr.intro
Nat.find (_ : βˆƒ x, x ∈ { m | p (m + n) }) + n = Nat.find hp
n: β„•

p: β„• β†’ Prop

m: β„•

hm: m ∈ { m | p (m + n) }

hp: βˆƒ n, n ∈ { m | p m }

hn: n ≀ Nat.find hp


inr.intro
Nat.find (_ : βˆƒ x, x ∈ { m | p (m + n) }) + n = Nat.find hp
n: β„•

p: β„• β†’ Prop

hn: n ≀ sInf { m | p m }

m: β„•

hm: m ∈ { m | p (m + n) }


inr.intro
sInf { m | p (m + n) } + n = sInf { m | p m }

Goals accomplished! πŸ™
#align nat.Inf_add
Nat.sInf_add: βˆ€ {n : β„•} {p : β„• β†’ Prop}, n ≀ sInf { m | p m } β†’ sInf { m | p (m + n) } + n = sInf { m | p m }
Nat.sInf_add
theorem
sInf_add': βˆ€ {n : β„•} {p : β„• β†’ Prop}, 0 < sInf { m | p m } β†’ sInf { m | p m } + n = sInf { m | p (m - n) }
sInf_add'
{n :
β„•: Type
β„•
} {
p: β„• β†’ Prop
p
:
β„•: Type
β„•
β†’
Prop: Type
Prop
} (
h: 0 < sInf { m | p m }
h
:
0: ?m.13024
0
<
sInf: {Ξ± : Type ?u.13039} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
{
m: ?m.13047
m
|
p: β„• β†’ Prop
p
m: ?m.13047
m
}) :
sInf: {Ξ± : Type ?u.13083} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
{
m: ?m.13091
m
|
p: β„• β†’ Prop
p
m: ?m.13091
m
} + n =
sInf: {Ξ± : Type ?u.13095} β†’ [self : InfSet Ξ±] β†’ Set Ξ± β†’ Ξ±
sInf
{
m: ?m.13103
m
|
p: β„• β†’ Prop
p
(
m: ?m.13103
m
- n) } :=

Goals accomplished! πŸ™
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


sInf { m | p m } + n = sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

h₁: n ≀ sInf { m | p (m - n) }


sInf { m | p m } + n = sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


h₁
n ≀ sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


sInf { m | p m } + n = sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

h₁: n ≀ sInf { m | p (m - n) }

x✝: β„•


h.e'_2.h.e'_5.h.e'_3.h.e'_2.h.h.e'_1
x✝ = x✝ + n - n
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


h₁
n ≀ sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


sInf { m | p m } + n = sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

h₁: n ≀ sInf { m | p (m - n) }

x✝: β„•


h.e'_2.h.e'_5.h.e'_3.h.e'_2.h.h.e'_1
x✝ = x✝ + n - n
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

h₁: n ≀ sInf { m | p (m - n) }

x✝: β„•


h.e'_2.h.e'_5.h.e'_3.h.e'_2.h.h.e'_1
x✝ = x✝ + n - n
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


h₁
n ≀ sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

h₁: n ≀ sInf { m | p (m - n) }

x✝: β„•


h.e'_2.h.e'_5.h.e'_3.h.e'_2.h.h.e'_1
x✝ = x✝ + n - n

Goals accomplished! πŸ™

Goals accomplished! πŸ™
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


sInf { m | p m } + n = sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }


h₁.intro
n ≀ sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


sInf { m | p m } + n = sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }


h₁.intro.refine'_1
m + n ∈ { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }

b: β„•

hb: b ∈ { m | p (m - n) }

hbn: b < n


h₁.intro.refine'_2
b - n ∈ { m | p m }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


sInf { m | p m } + n = sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }


h₁.intro.refine'_1
m + n ∈ { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }


h₁.intro.refine'_1
m + n ∈ { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }

b: β„•

hb: b ∈ { m | p (m - n) }

hbn: b < n


h₁.intro.refine'_2
b - n ∈ { m | p m }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }


h₁.intro.refine'_1
p (m + n - n)
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }


h₁.intro.refine'_1
m + n ∈ { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }


h₁.intro.refine'_1
p (m + n - n)
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }


h₁.intro.refine'_1
p m
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }


h₁.intro.refine'_1
p m
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }


sInf { m | p m } + n = sInf { m | p (m - n) }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }

b: β„•

hb: b ∈ { m | p (m - n) }

hbn: b < n


h₁.intro.refine'_2
b - n ∈ { m | p m }
n: β„•

p: β„• β†’ Prop

h: 0 < sInf { m | p m }

m: β„•

hm: m ∈ { m | p m }

b: β„•

hb: b ∈ { m | p (m - n) }

hbn: b < n


h₁.intro.refine'_2
b - n ∈ { m | p m }

Goals accomplished! πŸ™
#align nat.Inf_add'
Nat.sInf_add': βˆ€ {n : β„•} {p : β„• β†’ Prop}, 0 < sInf { m | p m } β†’ sInf { m | p m } + n = sInf { m | p (m - n) }
Nat.sInf_add'
section variable {
Ξ±: Type ?u.57976
Ξ±
:
Type _: Type (?u.43343+1)
Type _
} [
CompleteLattice: Type ?u.43346 β†’ Type ?u.43346
CompleteLattice
Ξ±: Type ?u.18822
Ξ±
] theorem
iSup_lt_succ: βˆ€ (u : β„• β†’ Ξ±) (n : β„•), (⨆ k, ⨆ h, u k) = (⨆ k, ⨆ h, u k) βŠ” u n
iSup_lt_succ
(
u: β„• β†’ Ξ±
u
:
β„•: Type
β„•
β†’
Ξ±: Type ?u.18828
Ξ±
) (n :
β„•: Type
β„•
) : (⨆
k: ?m.18847
k
< n +
1: ?m.18876
1
,
u: β„• β†’ Ξ±
u
k: ?m.18847
k
) = (⨆
k: ?m.19003
k
< n,
u: β„• β†’ Ξ±
u
k: ?m.19003
k
) βŠ”
u: β„• β†’ Ξ±
u
n :=

Goals accomplished! πŸ™
Ξ±: Type u_1

inst✝: CompleteLattice α

u: β„• β†’ Ξ±

n: β„•


(⨆ k, ⨆ h, u k) = (⨆ k, ⨆ h, u k) βŠ” u n

Goals accomplished! πŸ™
#align nat.supr_lt_succ
Nat.iSup_lt_succ: βˆ€ {Ξ± : Type u_1} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (⨆ k, ⨆ h, u k) = (⨆ k, ⨆ h, u k) βŠ” u n
Nat.iSup_lt_succ
theorem
iSup_lt_succ': βˆ€ {Ξ± : Type u_1} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (⨆ k, ⨆ h, u k) = u 0 βŠ” ⨆ k, ⨆ h, u (k + 1)
iSup_lt_succ'
(
u: β„• β†’ Ξ±
u
:
β„•: Type
β„•
β†’
Ξ±: Type ?u.43343
Ξ±
) (n :
β„•: Type
β„•
) : (⨆
k: ?m.43362
k
< n +
1: ?m.43391
1
,
u: β„• β†’ Ξ±
u
k: ?m.43362
k
) =
u: β„• β†’ Ξ±
u
0: ?m.43498
0
βŠ” ⨆
k: ?m.43525
k
< n,
u: β„• β†’ Ξ±
u
(
k: ?m.43525
k
+
1: ?m.43556
1
) :=

Goals accomplished! πŸ™
Ξ±: Type u_1

inst✝: CompleteLattice α

u: β„• β†’ Ξ±

n: β„•


(⨆ k, ⨆ h, u k) = u 0 βŠ” ⨆ k, ⨆ h, u (k + 1)
Ξ±: Type u_1

inst✝: CompleteLattice α

u: β„• β†’ Ξ±

n: β„•


(⨆ k, ⨆ h, u k) = u 0 βŠ” ⨆ k, ⨆ h, u (k + 1)
Ξ±: Type u_1

inst✝: CompleteLattice α

u: β„• β†’ Ξ±

n: β„•


((⨆ h, u 0) βŠ” ⨆ i, ⨆ h, u (i + 1)) = u 0 βŠ” ⨆ k, ⨆ h, u (k + 1)
Ξ±: Type u_1

inst✝: CompleteLattice α

u: β„• β†’ Ξ±

n: β„•


((⨆ h, u 0) βŠ” ⨆ i, ⨆ h, u (i + 1)) = u 0 βŠ” ⨆ k, ⨆ h, u (k + 1)
Ξ±: Type u_1

inst✝: CompleteLattice α

u: β„• β†’ Ξ±

n: β„•


(⨆ k, ⨆ h, u k) = u 0 βŠ” ⨆ k, ⨆ h, u (k + 1)

Goals accomplished! πŸ™
#align nat.supr_lt_succ'
Nat.iSup_lt_succ': βˆ€ {Ξ± : Type u_1} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (⨆ k, ⨆ h, u k) = u 0 βŠ” ⨆ k, ⨆ h, u (k + 1)
Nat.iSup_lt_succ'
theorem
iInf_lt_succ: βˆ€ (u : β„• β†’ Ξ±) (n : β„•), (β¨… k, β¨… h, u k) = (β¨… k, β¨… h, u k) βŠ“ u n
iInf_lt_succ
(
u: β„• β†’ Ξ±
u
:
β„•: Type
β„•
β†’
Ξ±: Type ?u.57670
Ξ±
) (n :
β„•: Type
β„•
) : (β¨…
k: ?m.57689
k
< n +
1: ?m.57719
1
,
u: β„• β†’ Ξ±
u
k: ?m.57689
k
) = (β¨…
k: ?m.57847
k
< n,
u: β„• β†’ Ξ±
u
k: ?m.57847
k
) βŠ“
u: β„• β†’ Ξ±
u
n := @
iSup_lt_succ: βˆ€ {Ξ± : Type ?u.57916} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (⨆ k, ⨆ h, u k) = (⨆ k, ⨆ h, u k) βŠ” u n
iSup_lt_succ
Ξ±: Type ?u.57670
Ξ±
α΅’α΅ˆ _
_: β„• β†’ Ξ±α΅’α΅ˆ
_
_ #align nat.infi_lt_succ
Nat.iInf_lt_succ: βˆ€ {Ξ± : Type u_1} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (β¨… k, β¨… h, u k) = (β¨… k, β¨… h, u k) βŠ“ u n
Nat.iInf_lt_succ
theorem
iInf_lt_succ': βˆ€ {Ξ± : Type u_1} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (β¨… k, β¨… h, u k) = u 0 βŠ“ β¨… k, β¨… h, u (k + 1)
iInf_lt_succ'
(
u: β„• β†’ Ξ±
u
:
β„•: Type
β„•
β†’
Ξ±: Type ?u.57976
Ξ±
) (n :
β„•: Type
β„•
) : (β¨…
k: ?m.57995
k
< n +
1: ?m.58025
1
,
u: β„• β†’ Ξ±
u
k: ?m.57995
k
) =
u: β„• β†’ Ξ±
u
0: ?m.58132
0
βŠ“ β¨…
k: ?m.58160
k
< n,
u: β„• β†’ Ξ±
u
(
k: ?m.58160
k
+
1: ?m.58192
1
) := @
iSup_lt_succ': βˆ€ {Ξ± : Type ?u.58274} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (⨆ k, ⨆ h, u k) = u 0 βŠ” ⨆ k, ⨆ h, u (k + 1)
iSup_lt_succ'
Ξ±: Type ?u.57976
Ξ±
α΅’α΅ˆ _
_: β„• β†’ Ξ±α΅’α΅ˆ
_
_ #align nat.infi_lt_succ'
Nat.iInf_lt_succ': βˆ€ {Ξ± : Type u_1} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (β¨… k, β¨… h, u k) = u 0 βŠ“ β¨… k, β¨… h, u (k + 1)
Nat.iInf_lt_succ'
end end Nat namespace Set variable {
Ξ±: Type ?u.58563
Ξ±
:
Type _: Type (?u.58334+1)
Type _
} theorem
biUnion_lt_succ: βˆ€ (u : β„• β†’ Set Ξ±) (n : β„•), (iUnion fun k => iUnion fun h => u k) = (iUnion fun k => iUnion fun h => u k) βˆͺ u n
biUnion_lt_succ
(
u: β„• β†’ Set Ξ±
u
:
β„•: Type
β„•
β†’
Set: Type ?u.58342 β†’ Type ?u.58342
Set
Ξ±: Type ?u.58337
Ξ±
) (n :
β„•: Type
β„•
) : (⋃
k: ?m.58354
k
< n +
1: ?m.58369
1
,
u: β„• β†’ Set Ξ±
u
k: ?m.58354
k
) = (⋃
k: ?m.58454
k
< n,
u: β„• β†’ Set Ξ±
u
k: ?m.58454
k
) βˆͺ
u: β„• β†’ Set Ξ±
u
n :=
Nat.iSup_lt_succ: βˆ€ {Ξ± : Type ?u.58491} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (⨆ k, ⨆ h, u k) = (⨆ k, ⨆ h, u k) βŠ” u n
Nat.iSup_lt_succ
u: β„• β†’ Set Ξ±
u
n #align set.bUnion_lt_succ
Set.biUnion_lt_succ: βˆ€ {Ξ± : Type u_1} (u : β„• β†’ Set Ξ±) (n : β„•), (iUnion fun k => iUnion fun h => u k) = (iUnion fun k => iUnion fun h => u k) βˆͺ u n
Set.biUnion_lt_succ
theorem
biUnion_lt_succ': βˆ€ (u : β„• β†’ Set Ξ±) (n : β„•), (iUnion fun k => iUnion fun h => u k) = u 0 βˆͺ iUnion fun k => iUnion fun h => u (k + 1)
biUnion_lt_succ'
(
u: β„• β†’ Set Ξ±
u
:
β„•: Type
β„•
β†’
Set: Type ?u.58568 β†’ Type ?u.58568
Set
Ξ±: Type ?u.58563
Ξ±
) (n :
β„•: Type
β„•
) : (⋃
k: ?m.58580
k
< n +
1: ?m.58595
1
,
u: β„• β†’ Set Ξ±
u
k: ?m.58580
k
) =
u: β„• β†’ Set Ξ±
u
0: ?m.58676
0
βˆͺ ⋃
k: ?m.58689
k
< n,
u: β„• β†’ Set Ξ±
u
(
k: ?m.58689
k
+
1: ?m.58706
1
) :=
Nat.iSup_lt_succ': βˆ€ {Ξ± : Type ?u.58767} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (⨆ k, ⨆ h, u k) = u 0 βŠ” ⨆ k, ⨆ h, u (k + 1)
Nat.iSup_lt_succ'
u: β„• β†’ Set Ξ±
u
n #align set.bUnion_lt_succ'
Set.biUnion_lt_succ': βˆ€ {Ξ± : Type u_1} (u : β„• β†’ Set Ξ±) (n : β„•), (iUnion fun k => iUnion fun h => u k) = u 0 βˆͺ iUnion fun k => iUnion fun h => u (k + 1)
Set.biUnion_lt_succ'
theorem
biInter_lt_succ: βˆ€ {Ξ± : Type u_1} (u : β„• β†’ Set Ξ±) (n : β„•), (iInter fun k => iInter fun h => u k) = (iInter fun k => iInter fun h => u k) ∩ u n
biInter_lt_succ
(
u: β„• β†’ Set Ξ±
u
:
β„•: Type
β„•
β†’
Set: Type ?u.58844 β†’ Type ?u.58844
Set
Ξ±: Type ?u.58839
Ξ±
) (n :
β„•: Type
β„•
) : (β‹‚
k: ?m.58856
k
< n +
1: ?m.58871
1
,
u: β„• β†’ Set Ξ±
u
k: ?m.58856
k
) = (β‹‚
k: ?m.58956
k
< n,
u: β„• β†’ Set Ξ±
u
k: ?m.58956
k
) ∩
u: β„• β†’ Set Ξ±
u
n :=
Nat.iInf_lt_succ: βˆ€ {Ξ± : Type ?u.58993} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (β¨… k, β¨… h, u k) = (β¨… k, β¨… h, u k) βŠ“ u n
Nat.iInf_lt_succ
u: β„• β†’ Set Ξ±
u
n #align set.bInter_lt_succ
Set.biInter_lt_succ: βˆ€ {Ξ± : Type u_1} (u : β„• β†’ Set Ξ±) (n : β„•), (iInter fun k => iInter fun h => u k) = (iInter fun k => iInter fun h => u k) ∩ u n
Set.biInter_lt_succ
theorem
biInter_lt_succ': βˆ€ (u : β„• β†’ Set Ξ±) (n : β„•), (iInter fun k => iInter fun h => u k) = u 0 ∩ iInter fun k => iInter fun h => u (k + 1)
biInter_lt_succ'
(
u: β„• β†’ Set Ξ±
u
:
β„•: Type
β„•
β†’
Set: Type ?u.59069 β†’ Type ?u.59069
Set
Ξ±: Type ?u.59064
Ξ±
) (n :
β„•: Type
β„•
) : (β‹‚
k: ?m.59081
k
< n +
1: ?m.59096
1
,
u: β„• β†’ Set Ξ±
u
k: ?m.59081
k
) =
u: β„• β†’ Set Ξ±
u
0: ?m.59177
0
∩ β‹‚
k: ?m.59190
k
< n,
u: β„• β†’ Set Ξ±
u
(
k: ?m.59190
k
+
1: ?m.59207
1
) :=
Nat.iInf_lt_succ': βˆ€ {Ξ± : Type ?u.59268} [inst : CompleteLattice Ξ±] (u : β„• β†’ Ξ±) (n : β„•), (β¨… k, β¨… h, u k) = u 0 βŠ“ β¨… k, β¨… h, u (k + 1)
Nat.iInf_lt_succ'
u: β„• β†’ Set Ξ±
u
n #align set.bInter_lt_succ'
Set.biInter_lt_succ': βˆ€ {Ξ± : Type u_1} (u : β„• β†’ Set Ξ±) (n : β„•), (iInter fun k => iInter fun h => u k) = u 0 ∩ iInter fun k => iInter fun h => u (k + 1)
Set.biInter_lt_succ'
end Set