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) 2017 Johannes HΓΆlzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes HΓΆlzl

! This file was ported from Lean 3 source module order.zorn
! leanprover-community/mathlib commit 46a64b5b4268c594af770c44d9e502afc6a515cb
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Order.Chain

/-!
# Zorn's lemmas

This file proves several formulations of Zorn's Lemma.

## Variants

The primary statement of Zorn's lemma is `exists_maximal_of_chains_bounded`. Then it is specialized
to particular relations:
* `(≀)` with `zorn_partialOrder`
* `(βŠ†)` with `zorn_subset`
* `(βŠ‡)` with `zorn_superset`

Lemma names carry modifiers:
* `β‚€`: Quantifies over a set, as opposed to over a type.
* `_nonempty`: Doesn't ask to prove that the empty chain is bounded and lets you give an element
  that will be smaller than the maximal element found (the maximal element is no smaller than any
  other element, but it can also be incomparable to some).

## How-to

This file comes across as confusing to those who haven't yet used it, so here is a detailed
walkthrough:
1. Know what relation on which type/set you're looking for. See Variants above. You can discharge
  some conditions to Zorn's lemma directly using a `_nonempty` variant.
2. Write down the definition of your type/set, put a `suffices : βˆƒ m, βˆ€ a, m β‰Ί a β†’ a β‰Ί m, { ... },`
  (or whatever you actually need) followed by a `apply some_version_of_zorn`.
3. Fill in the details. This is where you start talking about chains.

A typical proof using Zorn could look like this (TODO: update to mathlib4)
```lean
lemma zorny_lemma : zorny_statement :=
begin
  let s : Set Ξ± := {x | whatever x},
  suffices : βˆƒ x ∈ s, βˆ€ y ∈ s, y βŠ† x β†’ y = x, -- or with another operator
  { exact proof_post_zorn },
  apply zorn_subset, -- or another variant
  rintro c hcs hc,
  obtain rfl | hcnemp := c.eq_empty_or_nonempty, -- you might need to disjunct on c empty or not
  { exact ⟨edge_case_construction,
      proof_that_edge_case_construction_respects_whatever,
      proof_that_edge_case_construction_contains_all_stuff_in_c⟩ },
  exact ⟨construction,
    proof_that_construction_respects_whatever,
    proof_that_construction_contains_all_stuff_in_c⟩,
end
```

## Notes

Originally ported from Isabelle/HOL. The
[original file](https://isabelle.in.tum.de/dist/library/HOL/HOL/Zorn.html) was written by Jacques D.
Fleuriot, Tobias Nipkow, Christian Sternagel.
-/


open Classical Set

variable {
Ξ±: Type ?u.2
Ξ±
Ξ²: Type ?u.2900
Ξ²
:
Type _: Type (?u.3828+1)
Type _
} {
r: Ξ± β†’ Ξ± β†’ Prop
r
:
Ξ±: Type ?u.121
Ξ±
β†’
Ξ±: Type ?u.121
Ξ±
β†’
Prop: Type
Prop
} {
c: Set Ξ±
c
:
Set: Type ?u.44 β†’ Type ?u.44
Set
Ξ±: Type ?u.2
Ξ±
} /-- Local notation for the relation being considered. -/ local infixl:50 " β‰Ί " => r /-- **Zorn's lemma** If every chain has an upper bound, then there exists a maximal element. -/ theorem
exists_maximal_of_chains_bounded: (βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub) β†’ (βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c) β†’ βˆƒ m, βˆ€ (a : Ξ±), r m a β†’ r a m
exists_maximal_of_chains_bounded
(
h: βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub
h
: βˆ€
c: ?m.2272
c
,
IsChain: {Ξ± : Type ?u.2276} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
r: Ξ± β†’ Ξ± β†’ Prop
r
c: ?m.2272
c
β†’ βˆƒ
ub: ?m.2289
ub
, βˆ€
a: ?m.2292
a
∈
c: ?m.2272
c
,
a: ?m.2292
a
β‰Ί
ub: ?m.2289
ub
) (
trans: βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c
trans
: βˆ€ {
a: ?m.2337
a
b: ?m.2340
b
c: ?m.2343
c
},
a: ?m.2337
a
β‰Ί
b: ?m.2340
b
β†’
b: ?m.2340
b
β‰Ί
c: ?m.2343
c
β†’
a: ?m.2337
a
β‰Ί
c: ?m.2343
c
) : βˆƒ
m: ?m.2355
m
, βˆ€
a: ?m.2358
a
,
m: ?m.2355
m
β‰Ί
a: ?m.2358
a
β†’
a: ?m.2358
a
β‰Ί
m: ?m.2355
m
:= have : βˆƒ
ub: ?m.2376
ub
, βˆ€
a: ?m.2379
a
∈
maxChain: {Ξ± : Type ?u.2400} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ±
maxChain
r: Ξ± β†’ Ξ± β†’ Prop
r
,
a: ?m.2379
a
β‰Ί
ub: ?m.2376
ub
:=
h: βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub
h
_: Set Ξ±
_
<|
maxChain_spec: βˆ€ {Ξ± : Type ?u.2443} {r : Ξ± β†’ Ξ± β†’ Prop}, IsMaxChain r (maxChain r)
maxChain_spec
.
left: βˆ€ {a b : Prop}, a ∧ b β†’ a
left
let ⟨
ub: Ξ±
ub
, (
hub: βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub
hub
: βˆ€ a ∈ maxChain r, a β‰Ί ub)⟩ :=
this: βˆƒ ub, βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub
this
⟨
ub: Ξ±
ub
, fun
a: ?m.2589
a
ha: ?m.2592
ha
=> have :
IsChain: {Ξ± : Type ?u.2595} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
r: Ξ± β†’ Ξ± β†’ Prop
r
(
insert: {Ξ± : outParam (Type ?u.2604)} β†’ {Ξ³ : Type ?u.2603} β†’ [self : Insert Ξ± Ξ³] β†’ Ξ± β†’ Ξ³ β†’ Ξ³
insert
a: ?m.2589
a
<|
maxChain: {Ξ± : Type ?u.2615} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ±
maxChain
r: Ξ± β†’ Ξ± β†’ Prop
r
) :=
maxChain_spec: βˆ€ {Ξ± : Type ?u.2634} {r : Ξ± β†’ Ξ± β†’ Prop}, IsMaxChain r (maxChain r)
maxChain_spec
.
1: βˆ€ {a b : Prop}, a ∧ b β†’ a
1
.
insert: βˆ€ {Ξ± : Type ?u.2642} {r : Ξ± β†’ Ξ± β†’ Prop} {s : Set Ξ±} {a : Ξ±}, IsChain r s β†’ (βˆ€ (b : Ξ±), b ∈ s β†’ a β‰  b β†’ r a b ∨ r b a) β†’ IsChain r (insert a s)
insert
fun
b: ?m.2679
b
hb: ?m.2682
hb
_: ?m.2685
_
=>
Or.inr: βˆ€ {a b : Prop}, b β†’ a ∨ b
Or.inr
<|
trans: βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c
trans
(
hub: βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub
hub
b: ?m.2679
b
hb: ?m.2682
hb
)
ha: ?m.2592
ha
hub: βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub
hub
a: ?m.2589
a
<|

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

Ξ²: Type ?u.2259

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

h: βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub

trans: βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c

this✝: βˆƒ ub, βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

ub: Ξ±

hub: βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

a: Ξ±

ha: r ub a

this: IsChain r (insert a (maxChain r))


Ξ±: Type u_1

Ξ²: Type ?u.2259

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

h: βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub

trans: βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c

this✝: βˆƒ ub, βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

ub: Ξ±

hub: βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

a: Ξ±

ha: r ub a

this: IsChain r (insert a (maxChain r))


Ξ±: Type u_1

Ξ²: Type ?u.2259

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

h: βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub

trans: βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c

this✝: βˆƒ ub, βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

ub: Ξ±

hub: βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

a: Ξ±

ha: r ub a

this: IsChain r (insert a (maxChain r))


Ξ±: Type u_1

Ξ²: Type ?u.2259

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

h: βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub

trans: βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c

this✝: βˆƒ ub, βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

ub: Ξ±

hub: βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

a: Ξ±

ha: r ub a

this: IsChain r (insert a (maxChain r))


Ξ±: Type u_1

Ξ²: Type ?u.2259

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

h: βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub

trans: βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c

this✝: βˆƒ ub, βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

ub: Ξ±

hub: βˆ€ (a : Ξ±), a ∈ maxChain r β†’ r a ub

a: Ξ±

ha: r ub a

this: IsChain r (insert a (maxChain r))



Goals accomplished! πŸ™
⟩ #align exists_maximal_of_chains_bounded
exists_maximal_of_chains_bounded: βˆ€ {Ξ± : Type u_1} {r : Ξ± β†’ Ξ± β†’ Prop}, (βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub) β†’ (βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c) β†’ βˆƒ m, βˆ€ (a : Ξ±), r m a β†’ r a m
exists_maximal_of_chains_bounded
/-- A variant of Zorn's lemma. If every nonempty chain of a nonempty type has an upper bound, then there is a maximal element. -/ theorem
exists_maximal_of_nonempty_chains_bounded: βˆ€ [inst : Nonempty Ξ±], (βˆ€ (c : Set Ξ±), IsChain r c β†’ Set.Nonempty c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub) β†’ (βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c) β†’ βˆƒ m, βˆ€ (a : Ξ±), r m a β†’ r a m
exists_maximal_of_nonempty_chains_bounded
[
Nonempty: Sort ?u.2912 β†’ Prop
Nonempty
Ξ±: Type ?u.2897
Ξ±
] (
h: βˆ€ (c : Set Ξ±), IsChain r c β†’ Set.Nonempty c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub
h
: βˆ€
c: ?m.2916
c
,
IsChain: {Ξ± : Type ?u.2920} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
r: Ξ± β†’ Ξ± β†’ Prop
r
c: ?m.2916
c
β†’
c: ?m.2916
c
.
Nonempty: {Ξ± : Type ?u.2931} β†’ Set Ξ± β†’ Prop
Nonempty
β†’ βˆƒ
ub: ?m.2939
ub
, βˆ€
a: ?m.2942
a
∈
c: ?m.2916
c
,
a: ?m.2942
a
β‰Ί
ub: ?m.2939
ub
) (
trans: βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c
trans
: βˆ€ {
a: ?m.2987
a
b: ?m.2990
b
c: ?m.2993
c
},
a: ?m.2987
a
β‰Ί
b: ?m.2990
b
β†’
b: ?m.2990
b
β‰Ί
c: ?m.2993
c
β†’
a: ?m.2987
a
β‰Ί
c: ?m.2993
c
) : βˆƒ
m: ?m.3005
m
, βˆ€
a: ?m.3008
a
,
m: ?m.3005
m
β‰Ί
a: ?m.3008
a
β†’
a: ?m.3008
a
β‰Ί
m: ?m.3005
m
:=
exists_maximal_of_chains_bounded: βˆ€ {Ξ± : Type ?u.3023} {r : Ξ± β†’ Ξ± β†’ Prop}, (βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub) β†’ (βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c) β†’ βˆƒ m, βˆ€ (a : Ξ±), r m a β†’ r a m
exists_maximal_of_chains_bounded
(fun
c: ?m.3037
c
hc: ?m.3040
hc
=> (
eq_empty_or_nonempty: βˆ€ {Ξ± : Type ?u.3042} (s : Set Ξ±), s = βˆ… ∨ Set.Nonempty s
eq_empty_or_nonempty
c: ?m.3037
c
).
elim: βˆ€ {a b c : Prop}, a ∨ b β†’ (a β†’ c) β†’ (b β†’ c) β†’ c
elim
(fun
h: ?m.3059
h
=> ⟨
Classical.arbitrary: (Ξ± : Sort ?u.3072) β†’ [h : Nonempty Ξ±] β†’ Ξ±
Classical.arbitrary
Ξ±: Type ?u.2897
Ξ±
, fun
x: ?m.3087
x
hx: ?m.3090
hx
=> (
h: ?m.3059
h
β–Έ
hx: ?m.3090
hx
:
x: ?m.3087
x
∈ (
βˆ…: ?m.3113
βˆ…
:
Set: Type ?u.3111 β†’ Type ?u.3111
Set
Ξ±: Type ?u.2897
Ξ±
)).
elim: βˆ€ {C : Sort ?u.3171}, False β†’ C
elim
⟩) (
h: βˆ€ (c : Set Ξ±), IsChain r c β†’ Set.Nonempty c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub
h
c: ?m.3037
c
hc: ?m.3040
hc
))
trans: βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c
trans
#align exists_maximal_of_nonempty_chains_bounded
exists_maximal_of_nonempty_chains_bounded: βˆ€ {Ξ± : Type u_1} {r : Ξ± β†’ Ξ± β†’ Prop} [inst : Nonempty Ξ±], (βˆ€ (c : Set Ξ±), IsChain r c β†’ Set.Nonempty c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub) β†’ (βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c) β†’ βˆƒ m, βˆ€ (a : Ξ±), r m a β†’ r a m
exists_maximal_of_nonempty_chains_bounded
section Preorder variable [
Preorder: Type ?u.3266 β†’ Type ?u.3266
Preorder
Ξ±: Type ?u.3251
Ξ±
] theorem
zorn_preorder: (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
zorn_preorder
(
h: βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c
h
: βˆ€
c: Set Ξ±
c
:
Set: Type ?u.3288 β†’ Type ?u.3288
Set
Ξ±: Type ?u.3269
Ξ±
,
IsChain: {Ξ± : Type ?u.3292} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· ≀ Β·): Ξ± β†’ Ξ± β†’ Prop
(Β· ≀ Β·)
c: Set Ξ±
c
β†’
BddAbove: {Ξ± : Type ?u.3353} β†’ [inst : Preorder Ξ±] β†’ Set Ξ± β†’ Prop
BddAbove
c: Set Ξ±
c
) : βˆƒ
m: Ξ±
m
:
Ξ±: Type ?u.3269
Ξ±
, βˆ€
a: ?m.3385
a
,
m: Ξ±
m
≀
a: ?m.3385
a
β†’
a: ?m.3385
a
≀
m: Ξ±
m
:=
exists_maximal_of_chains_bounded: βˆ€ {Ξ± : Type ?u.3420} {r : Ξ± β†’ Ξ± β†’ Prop}, (βˆ€ (c : Set Ξ±), IsChain r c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub) β†’ (βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c) β†’ βˆƒ m, βˆ€ (a : Ξ±), r m a β†’ r a m
exists_maximal_of_chains_bounded
h: βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c
h
le_trans: βˆ€ {Ξ± : Type ?u.3454} [inst : Preorder Ξ±] {a b c : Ξ±}, a ≀ b β†’ b ≀ c β†’ a ≀ c
le_trans
#align zorn_preorder
zorn_preorder: βˆ€ {Ξ± : Type u_1} [inst : Preorder Ξ±], (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
zorn_preorder
theorem
zorn_nonempty_preorder: βˆ€ {Ξ± : Type u_1} [inst : Preorder Ξ±] [inst_1 : Nonempty Ξ±], (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ Set.Nonempty c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
zorn_nonempty_preorder
[
Nonempty: Sort ?u.3528 β†’ Prop
Nonempty
Ξ±: Type ?u.3510
Ξ±
] (
h: βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ Set.Nonempty c β†’ BddAbove c
h
: βˆ€
c: Set Ξ±
c
:
Set: Type ?u.3532 β†’ Type ?u.3532
Set
Ξ±: Type ?u.3510
Ξ±
,
IsChain: {Ξ± : Type ?u.3536} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· ≀ Β·): Ξ± β†’ Ξ± β†’ Prop
(Β· ≀ Β·)
c: Set Ξ±
c
β†’
c: Set Ξ±
c
.
Nonempty: {Ξ± : Type ?u.3598} β†’ Set Ξ± β†’ Prop
Nonempty
β†’
BddAbove: {Ξ± : Type ?u.3603} β†’ [inst : Preorder Ξ±] β†’ Set Ξ± β†’ Prop
BddAbove
c: Set Ξ±
c
) : βˆƒ
m: Ξ±
m
:
Ξ±: Type ?u.3510
Ξ±
, βˆ€
a: ?m.3636
a
,
m: Ξ±
m
≀
a: ?m.3636
a
β†’
a: ?m.3636
a
≀
m: Ξ±
m
:=
exists_maximal_of_nonempty_chains_bounded: βˆ€ {Ξ± : Type ?u.3673} {r : Ξ± β†’ Ξ± β†’ Prop} [inst : Nonempty Ξ±], (βˆ€ (c : Set Ξ±), IsChain r c β†’ Set.Nonempty c β†’ βˆƒ ub, βˆ€ (a : Ξ±), a ∈ c β†’ r a ub) β†’ (βˆ€ {a b c : Ξ±}, r a b β†’ r b c β†’ r a c) β†’ βˆƒ m, βˆ€ (a : Ξ±), r m a β†’ r a m
exists_maximal_of_nonempty_chains_bounded
h: βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ Set.Nonempty c β†’ BddAbove c
h
le_trans: βˆ€ {Ξ± : Type ?u.3754} [inst : Preorder Ξ±] {a b c : Ξ±}, a ≀ b β†’ b ≀ c β†’ a ≀ c
le_trans
#align zorn_nonempty_preorder
zorn_nonempty_preorder: βˆ€ {Ξ± : Type u_1} [inst : Preorder Ξ±] [inst_1 : Nonempty Ξ±], (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ Set.Nonempty c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
zorn_nonempty_preorder
theorem
zorn_preorderβ‚€: βˆ€ (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆƒ m, m ∈ s ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
zorn_preorderβ‚€
(
s: Set Ξ±
s
:
Set: Type ?u.3843 β†’ Type ?u.3843
Set
Ξ±: Type ?u.3825
Ξ±
) (
ih: βˆ€ (c : Set Ξ±) (x : c βŠ† s), IsChain (fun x_1 x_2 => x_1 ≀ x_2) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
ih
: βˆ€ (
c: ?m.3847
c
) (
_: c βŠ† s
_
:
c: ?m.3847
c
βŠ†
s: Set Ξ±
s
),
IsChain: {Ξ± : Type ?u.3869} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· ≀ Β·): Ξ± β†’ Ξ± β†’ Prop
(Β· ≀ Β·)
c: ?m.3847
c
β†’ βˆƒ
ub: ?m.3932
ub
∈
s: Set Ξ±
s
, βˆ€
z: ?m.3953
z
∈
c: ?m.3847
c
,
z: ?m.3953
z
≀
ub: ?m.3932
ub
) : βˆƒ
m: ?m.4009
m
∈
s: Set Ξ±
s
, βˆ€
z: ?m.4028
z
∈
s: Set Ξ±
s
,
m: ?m.4009
m
≀
z: ?m.4028
z
β†’
z: ?m.4028
z
≀
m: ?m.4009
m
:= let ⟨⟨
m: Ξ±
m
,
hms: m ∈ s
hms
⟩,
h: βˆ€ (a : ↑s), { val := m, property := hms } ≀ a β†’ a ≀ { val := m, property := hms }
h
⟩ := @
zorn_preorder: βˆ€ {Ξ± : Type ?u.4085} [inst : Preorder Ξ±], (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
zorn_preorder
s: Set Ξ±
s
_ fun
c: ?m.4217
c
hc: ?m.4220
hc
=> let ⟨
ub: Ξ±
ub
,
hubs: ub ∈ s
hubs
,
hub: βˆ€ (z : Ξ±), z ∈ Subtype.val '' c β†’ z ≀ ub
hub
⟩ :=
ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
ih
(
Subtype.val: {Ξ± : Sort ?u.4228} β†’ {p : Ξ± β†’ Prop} β†’ Subtype p β†’ Ξ±
Subtype.val
''
c: ?m.4217
c
) (fun
_: ?m.4242
_
⟨⟨
_: Ξ±
_
,
hx: val✝ ∈ s
hx
⟩, _,
h: ↑{ val := val✝, property := hx } = x✝¹
h
⟩ =>
h: ↑{ val := val✝, property := hx } = x✝¹
h
β–Έ
hx: val✝ ∈ s
hx
) (

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

Ξ²: Type ?u.3828

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

c: Set ↑s

hc: IsChain (fun x x_1 => x ≀ x_1) c


IsChain (fun x x_1 => x ≀ x_1) (Subtype.val '' c)
Ξ±: Type u_1

Ξ²: Type ?u.3828

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

c: Set ↑s

hc: IsChain (fun x x_1 => x ≀ x_1) c

p: { x // x ∈ s }

hpc: p ∈ c

q: { x // x ∈ s }

hqc: q ∈ c

hpq: ↑p β‰  ↑q


intro.intro.intro.intro
(fun x x_1 => x ≀ x_1) ↑p ↑q ∨ (fun x x_1 => x ≀ x_1) ↑q ↑p
Ξ±: Type u_1

Ξ²: Type ?u.3828

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

c: Set ↑s

hc: IsChain (fun x x_1 => x ≀ x_1) c


IsChain (fun x x_1 => x ≀ x_1) (Subtype.val '' c)

Goals accomplished! πŸ™
) ⟨⟨
ub: Ξ±
ub
,
hubs: ub ∈ s
hubs
⟩, fun ⟨
y: Ξ±
y
,
hy: y ∈ s
hy
⟩
hc: ?m.4590
hc
=>
hub: βˆ€ (z : Ξ±), z ∈ Subtype.val '' c β†’ z ≀ ub
hub
_: Ξ±
_
⟨
_: ?m.4660
_
,
hc: { val := y, property := hy } ∈ c
hc
,
rfl: βˆ€ {Ξ± : Sort ?u.4682} {a : Ξ±}, a = a
rfl
⟩⟩ ⟨
m: Ξ±
m
,
hms: m ∈ s
hms
, fun
z: ?m.5062
z
hzs: ?m.5065
hzs
hmz: ?m.5068
hmz
=>
h: βˆ€ (a : ↑s), { val := m, property := hms } ≀ a β†’ a ≀ { val := m, property := hms }
h
⟨
z: ?m.5062
z
,
hzs: ?m.5065
hzs
⟩
hmz: ?m.5068
hmz
⟩ #align zorn_preorderβ‚€
zorn_preorderβ‚€: βˆ€ {Ξ± : Type u_1} [inst : Preorder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆƒ m, m ∈ s ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
zorn_preorderβ‚€
theorem
zorn_nonempty_preorderβ‚€: βˆ€ (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), x ∈ s β†’ βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
zorn_nonempty_preorderβ‚€
(
s: Set Ξ±
s
:
Set: Type ?u.5549 β†’ Type ?u.5549
Set
Ξ±: Type ?u.5531
Ξ±
) (
ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
ih
: βˆ€ (
c: ?m.5553
c
) (
_: c βŠ† s
_
:
c: ?m.5553
c
βŠ†
s: Set Ξ±
s
),
IsChain: {Ξ± : Type ?u.5575} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· ≀ Β·): Ξ± β†’ Ξ± β†’ Prop
(Β· ≀ Β·)
c: ?m.5553
c
β†’ βˆ€
y: ?m.5636
y
∈
c: ?m.5553
c
, βˆƒ
ub: ?m.5674
ub
∈
s: Set Ξ±
s
, βˆ€
z: ?m.5693
z
∈
c: ?m.5553
c
,
z: ?m.5693
z
≀
ub: ?m.5674
ub
) (
x: Ξ±
x
:
Ξ±: Type ?u.5531
Ξ±
) (
hxs: x ∈ s
hxs
:
x: Ξ±
x
∈
s: Set Ξ±
s
) : βˆƒ
m: ?m.5779
m
∈
s: Set Ξ±
s
,
x: Ξ±
x
≀
m: ?m.5779
m
∧ βˆ€
z: ?m.5801
z
∈
s: Set Ξ±
s
,
m: ?m.5779
m
≀
z: ?m.5801
z
β†’
z: ?m.5801
z
≀
m: ?m.5779
m
:=

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

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s


βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

H: βˆƒ m, m ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ { y | y ∈ s ∧ x ≀ y } β†’ m ≀ z β†’ z ≀ m


refine_2
βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c


refine_1
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s


βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

H: βˆƒ m, m ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ { y | y ∈ s ∧ x ≀ y } β†’ m ≀ z β†’ z ≀ m


refine_2
βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

H: βˆƒ m, m ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ { y | y ∈ s ∧ x ≀ y } β†’ m ≀ z β†’ z ≀ m


refine_2
βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c


refine_1
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

m: Ξ±

hm: βˆ€ (z : Ξ±), z ∈ { y | y ∈ s ∧ x ≀ y } β†’ m ≀ z β†’ z ≀ m

hms: m ∈ s

hxm: x ≀ m


refine_2.intro.intro.intro
βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

H: βˆƒ m, m ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ { y | y ∈ s ∧ x ≀ y } β†’ m ≀ z β†’ z ≀ m


refine_2
βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m

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

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s


βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c


refine_1
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c


refine_1
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

hcs: βˆ… βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) βˆ…


refine_1.inl
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ βˆ… β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c

y: Ξ±

hy: y ∈ c


refine_1.inr.intro
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c


refine_1
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

hcs: βˆ… βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) βˆ…


refine_1.inl
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ βˆ… β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

hcs: βˆ… βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) βˆ…


refine_1.inl
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ βˆ… β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c

y: Ξ±

hy: y ∈ c


refine_1.inr.intro
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

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

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c


refine_1
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c

y: Ξ±

hy: y ∈ c


refine_1.inr.intro
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c

y: Ξ±

hy: y ∈ c


refine_1.inr.intro
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c

y: Ξ±

hy: y ∈ c

z: Ξ±

hzs: z ∈ s

hz: βˆ€ (z_1 : Ξ±), z_1 ∈ c β†’ z_1 ≀ z


refine_1.inr.intro.intro.intro
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
Ξ±: Type u_1

Ξ²: Type ?u.5534

r: Ξ± β†’ Ξ± β†’ Prop

c✝: Set α

inst✝: Preorder α

s: Set Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hxs: x ∈ s

c: Set Ξ±

hcs: c βŠ† { y | y ∈ s ∧ x ≀ y }

hc: IsChain (fun x x_1 => x ≀ x_1) c

y: Ξ±

hy: y ∈ c


refine_1.inr.intro
βˆƒ ub, ub ∈ { y | y ∈ s ∧ x ≀ y } ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

Goals accomplished! πŸ™
#align zorn_nonempty_preorderβ‚€
zorn_nonempty_preorderβ‚€: βˆ€ {Ξ± : Type u_1} [inst : Preorder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), x ∈ s β†’ βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
zorn_nonempty_preorderβ‚€
theorem
zorn_nonempty_Iciβ‚€: βˆ€ {Ξ± : Type u_1} [inst : Preorder Ξ±] (a : Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† Ici a β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, a ≀ ub ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), a ≀ x β†’ βˆƒ m, x ≀ m ∧ βˆ€ (z : Ξ±), m ≀ z β†’ z ≀ m
zorn_nonempty_Iciβ‚€
(
a: Ξ±
a
:
Ξ±: Type ?u.6414
Ξ±
) (
ih: βˆ€ (c : Set Ξ±) (x : c βŠ† Ici a), IsChain (fun x_1 x_2 => x_1 ≀ x_2) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, a ≀ ub ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
ih
: βˆ€ (
c: ?m.6435
c
) (
_: c βŠ† Ici a
_
:
c: ?m.6435
c
βŠ†
Ici: {Ξ± : Type ?u.6446} β†’ [inst : Preorder Ξ±] β†’ Ξ± β†’ Set Ξ±
Ici
a: Ξ±
a
),
IsChain: {Ξ± : Type ?u.6479} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· ≀ Β·): Ξ± β†’ Ξ± β†’ Prop
(Β· ≀ Β·)
c: ?m.6435
c
β†’ βˆ€
y: ?m.6540
y
∈
c: ?m.6435
c
, βˆƒ
ub: ?m.6578
ub
,
a: Ξ±
a
≀
ub: ?m.6578
ub
∧ βˆ€
z: ?m.6592
z
∈
c: ?m.6435
c
,
z: ?m.6592
z
≀
ub: ?m.6578
ub
) (
x: Ξ±
x
:
Ξ±: Type ?u.6414
Ξ±
) (
hax: a ≀ x
hax
:
a: Ξ±
a
≀
x: Ξ±
x
) : βˆƒ
m: ?m.6645
m
,
x: Ξ±
x
≀
m: ?m.6645
m
∧ βˆ€
z: ?m.6651
z
,
m: ?m.6645
m
≀
z: ?m.6651
z
β†’
z: ?m.6651
z
≀
m: ?m.6645
m
:= let ⟨
m: Ξ±
m
, _,
hxm: x ≀ m
hxm
,
hm: βˆ€ (z : Ξ±), z ∈ Ici a β†’ m ≀ z β†’ z ≀ m
hm
⟩ :=
zorn_nonempty_preorderβ‚€: βˆ€ {Ξ± : Type ?u.6679} [inst : Preorder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), x ∈ s β†’ βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
zorn_nonempty_preorderβ‚€
(
Ici: {Ξ± : Type ?u.6682} β†’ [inst : Preorder Ξ±] β†’ Ξ± β†’ Set Ξ±
Ici
a: Ξ±
a
) (

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

Ξ²: Type ?u.6417

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

inst✝: Preorder α

a: Ξ±

ih: βˆ€ (c : Set Ξ±), c βŠ† Ici a β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, a ≀ ub ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

x: Ξ±

hax: a ≀ x


βˆ€ (c : Set Ξ±), c βŠ† Ici a β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ Ici a ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub

Goals accomplished! πŸ™
)
x: Ξ±
x
hax: a ≀ x
hax
⟨
m: Ξ±
m
,
hxm: x ≀ m
hxm
, fun
z: ?m.6829
z
hmz: ?m.6832
hmz
=>
hm: βˆ€ (z : Ξ±), z ∈ Ici a β†’ m ≀ z β†’ z ≀ m
hm
_: Ξ±
_
(
hax: a ≀ x
hax
.
trans: βˆ€ {Ξ± : Type ?u.6839} [inst : Preorder Ξ±] {a b c : Ξ±}, a ≀ b β†’ b ≀ c β†’ a ≀ c
trans
<|
hxm: x ≀ m
hxm
.
trans: βˆ€ {Ξ± : Type ?u.6854} [inst : Preorder Ξ±] {a b c : Ξ±}, a ≀ b β†’ b ≀ c β†’ a ≀ c
trans
hmz: ?m.6832
hmz
)
hmz: ?m.6832
hmz
⟩ #align zorn_nonempty_Iciβ‚€
zorn_nonempty_Iciβ‚€: βˆ€ {Ξ± : Type u_1} [inst : Preorder Ξ±] (a : Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† Ici a β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, a ≀ ub ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), a ≀ x β†’ βˆƒ m, x ≀ m ∧ βˆ€ (z : Ξ±), m ≀ z β†’ z ≀ m
zorn_nonempty_Iciβ‚€
end Preorder section PartialOrder variable [
PartialOrder: Type ?u.14751 β†’ Type ?u.14751
PartialOrder
Ξ±: Type ?u.14718
Ξ±
] theorem
zorn_partialOrder: (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a = m
zorn_partialOrder
(
h: βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c
h
: βˆ€
c: Set Ξ±
c
:
Set: Type ?u.14755 β†’ Type ?u.14755
Set
Ξ±: Type ?u.14736
Ξ±
,
IsChain: {Ξ± : Type ?u.14759} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· ≀ Β·): Ξ± β†’ Ξ± β†’ Prop
(Β· ≀ Β·)
c: Set Ξ±
c
β†’
BddAbove: {Ξ± : Type ?u.14820} β†’ [inst : Preorder Ξ±] β†’ Set Ξ± β†’ Prop
BddAbove
c: Set Ξ±
c
) : βˆƒ
m: Ξ±
m
:
Ξ±: Type ?u.14736
Ξ±
, βˆ€
a: ?m.14866
a
,
m: Ξ±
m
≀
a: ?m.14866
a
β†’
a: ?m.14866
a
=
m: Ξ±
m
:= let ⟨
m: Ξ±
m
,
hm: βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
hm
⟩ :=
zorn_preorder: βˆ€ {Ξ± : Type ?u.14908} [inst : Preorder Ξ±], (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
zorn_preorder
h: βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c
h
⟨
m: Ξ±
m
, fun
a: ?m.15018
a
ha: ?m.15021
ha
=>
le_antisymm: βˆ€ {Ξ± : Type ?u.15023} [inst : PartialOrder Ξ±] {a b : Ξ±}, a ≀ b β†’ b ≀ a β†’ a = b
le_antisymm
(
hm: βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
hm
a: ?m.15018
a
ha: ?m.15021
ha
)
ha: ?m.15021
ha
⟩ #align zorn_partial_order
zorn_partialOrder: βˆ€ {Ξ± : Type u_1} [inst : PartialOrder Ξ±], (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a = m
zorn_partialOrder
theorem
zorn_nonempty_partialOrder: βˆ€ {Ξ± : Type u_1} [inst : PartialOrder Ξ±] [inst_1 : Nonempty Ξ±], (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ Set.Nonempty c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a = m
zorn_nonempty_partialOrder
[
Nonempty: Sort ?u.15208 β†’ Prop
Nonempty
Ξ±: Type ?u.15190
Ξ±
] (
h: βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ Set.Nonempty c β†’ BddAbove c
h
: βˆ€
c: Set Ξ±
c
:
Set: Type ?u.15212 β†’ Type ?u.15212
Set
Ξ±: Type ?u.15190
Ξ±
,
IsChain: {Ξ± : Type ?u.15216} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· ≀ Β·): Ξ± β†’ Ξ± β†’ Prop
(Β· ≀ Β·)
c: Set Ξ±
c
β†’
c: Set Ξ±
c
.
Nonempty: {Ξ± : Type ?u.15278} β†’ Set Ξ± β†’ Prop
Nonempty
β†’
BddAbove: {Ξ± : Type ?u.15283} β†’ [inst : Preorder Ξ±] β†’ Set Ξ± β†’ Prop
BddAbove
c: Set Ξ±
c
) : βˆƒ
m: Ξ±
m
:
Ξ±: Type ?u.15190
Ξ±
, βˆ€
a: ?m.15330
a
,
m: Ξ±
m
≀
a: ?m.15330
a
β†’
a: ?m.15330
a
=
m: Ξ±
m
:= let ⟨
m: Ξ±
m
,
hm: βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
hm
⟩ :=
zorn_nonempty_preorder: βˆ€ {Ξ± : Type ?u.15374} [inst : Preorder Ξ±] [inst_1 : Nonempty Ξ±], (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ Set.Nonempty c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
zorn_nonempty_preorder
h: βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ Set.Nonempty c β†’ BddAbove c
h
⟨
m: Ξ±
m
, fun
a: ?m.15503
a
ha: ?m.15506
ha
=>
le_antisymm: βˆ€ {Ξ± : Type ?u.15508} [inst : PartialOrder Ξ±] {a b : Ξ±}, a ≀ b β†’ b ≀ a β†’ a = b
le_antisymm
(
hm: βˆ€ (a : Ξ±), m ≀ a β†’ a ≀ m
hm
a: ?m.15503
a
ha: ?m.15506
ha
)
ha: ?m.15506
ha
⟩ #align zorn_nonempty_partial_order
zorn_nonempty_partialOrder: βˆ€ {Ξ± : Type u_1} [inst : PartialOrder Ξ±] [inst_1 : Nonempty Ξ±], (βˆ€ (c : Set Ξ±), IsChain (fun x x_1 => x ≀ x_1) c β†’ Set.Nonempty c β†’ BddAbove c) β†’ βˆƒ m, βˆ€ (a : Ξ±), m ≀ a β†’ a = m
zorn_nonempty_partialOrder
theorem
zorn_partialOrderβ‚€: βˆ€ (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆƒ m, m ∈ s ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z = m
zorn_partialOrderβ‚€
(
s: Set Ξ±
s
:
Set: Type ?u.15684 β†’ Type ?u.15684
Set
Ξ±: Type ?u.15666
Ξ±
) (
ih: βˆ€ (c : Set Ξ±) (x : c βŠ† s), IsChain (fun x_1 x_2 => x_1 ≀ x_2) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
ih
: βˆ€ (
c: ?m.15688
c
) (
_: c βŠ† s
_
:
c: ?m.15688
c
βŠ†
s: Set Ξ±
s
),
IsChain: {Ξ± : Type ?u.15710} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· ≀ Β·): Ξ± β†’ Ξ± β†’ Prop
(Β· ≀ Β·)
c: ?m.15688
c
β†’ βˆƒ
ub: ?m.15773
ub
∈
s: Set Ξ±
s
, βˆ€
z: ?m.15794
z
∈
c: ?m.15688
c
,
z: ?m.15794
z
≀
ub: ?m.15773
ub
) : βˆƒ
m: ?m.15861
m
∈
s: Set Ξ±
s
, βˆ€
z: ?m.15880
z
∈
s: Set Ξ±
s
,
m: ?m.15861
m
≀
z: ?m.15880
z
β†’
z: ?m.15880
z
=
m: ?m.15861
m
:= let ⟨
m: Ξ±
m
,
hms: m ∈ s
hms
,
hm: βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
hm
⟩ :=
zorn_preorderβ‚€: βˆ€ {Ξ± : Type ?u.15936} [inst : Preorder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆƒ m, m ∈ s ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
zorn_preorderβ‚€
s: Set Ξ±
s
ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
ih
⟨
m: Ξ±
m
,
hms: m ∈ s
hms
, fun
z: ?m.16087
z
hzs: ?m.16090
hzs
hmz: ?m.16093
hmz
=> (
hm: βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
hm
z: ?m.16087
z
hzs: ?m.16090
hzs
hmz: ?m.16093
hmz
).
antisymm: βˆ€ {Ξ± : Type ?u.16095} [inst : PartialOrder Ξ±] {a b : Ξ±}, a ≀ b β†’ b ≀ a β†’ a = b
antisymm
hmz: ?m.16093
hmz
⟩ #align zorn_partial_orderβ‚€
zorn_partialOrderβ‚€: βˆ€ {Ξ± : Type u_1} [inst : PartialOrder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆƒ m, m ∈ s ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z = m
zorn_partialOrderβ‚€
theorem
zorn_nonempty_partialOrderβ‚€: βˆ€ {Ξ± : Type u_1} [inst : PartialOrder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), x ∈ s β†’ βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z = m
zorn_nonempty_partialOrderβ‚€
(
s: Set Ξ±
s
:
Set: Type ?u.16343 β†’ Type ?u.16343
Set
Ξ±: Type ?u.16325
Ξ±
) (
ih: βˆ€ (c : Set Ξ±) (x : c βŠ† s), IsChain (fun x_1 x_2 => x_1 ≀ x_2) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
ih
: βˆ€ (
c: ?m.16347
c
) (
_: c βŠ† s
_
:
c: ?m.16347
c
βŠ†
s: Set Ξ±
s
),
IsChain: {Ξ± : Type ?u.16369} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· ≀ Β·): Ξ± β†’ Ξ± β†’ Prop
(Β· ≀ Β·)
c: ?m.16347
c
β†’ βˆ€
y: ?m.16430
y
∈
c: ?m.16347
c
, βˆƒ
ub: ?m.16468
ub
∈
s: Set Ξ±
s
, βˆ€
z: ?m.16487
z
∈
c: ?m.16347
c
,
z: ?m.16487
z
≀
ub: ?m.16468
ub
) (
x: Ξ±
x
:
Ξ±: Type ?u.16325
Ξ±
) (
hxs: x ∈ s
hxs
:
x: Ξ±
x
∈
s: Set Ξ±
s
) : βˆƒ
m: ?m.16584
m
∈
s: Set Ξ±
s
,
x: Ξ±
x
≀
m: ?m.16584
m
∧ βˆ€
z: ?m.16606
z
∈
s: Set Ξ±
s
,
m: ?m.16584
m
≀
z: ?m.16606
z
β†’
z: ?m.16606
z
=
m: ?m.16584
m
:= let ⟨
m: Ξ±
m
,
hms: m ∈ s
hms
,
hxm: x ≀ m
hxm
,
hm: βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
hm
⟩ :=
zorn_nonempty_preorderβ‚€: βˆ€ {Ξ± : Type ?u.16664} [inst : Preorder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), x ∈ s β†’ βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
zorn_nonempty_preorderβ‚€
s: Set Ξ±
s
ih: βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub
ih
x: Ξ±
x
hxs: x ∈ s
hxs
⟨
m: Ξ±
m
,
hms: m ∈ s
hms
,
hxm: x ≀ m
hxm
, fun
z: ?m.16841
z
hzs: ?m.16844
hzs
hmz: ?m.16847
hmz
=> (
hm: βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z ≀ m
hm
z: ?m.16841
z
hzs: ?m.16844
hzs
hmz: ?m.16847
hmz
).
antisymm: βˆ€ {Ξ± : Type ?u.16849} [inst : PartialOrder Ξ±] {a b : Ξ±}, a ≀ b β†’ b ≀ a β†’ a = b
antisymm
hmz: ?m.16847
hmz
⟩ #align zorn_nonempty_partial_orderβ‚€
zorn_nonempty_partialOrderβ‚€: βˆ€ {Ξ± : Type u_1} [inst : PartialOrder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), x ∈ s β†’ βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z = m
zorn_nonempty_partialOrderβ‚€
end PartialOrder theorem
zorn_subset: βˆ€ (S : Set (Set Ξ±)), (βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ βˆƒ ub, ub ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ s βŠ† ub) β†’ βˆƒ m, m ∈ S ∧ βˆ€ (a : Set Ξ±), a ∈ S β†’ m βŠ† a β†’ a = m
zorn_subset
(
S: Set (Set Ξ±)
S
:
Set: Type ?u.17133 β†’ Type ?u.17133
Set
(
Set: Type ?u.17134 β†’ Type ?u.17134
Set
Ξ±: Type ?u.17118
Ξ±
)) (
h: βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ βˆƒ ub, ub ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ s βŠ† ub
h
: βˆ€ (
c: ?m.17138
c
) (
_: c βŠ† S
_
:
c: ?m.17138
c
βŠ†
S: Set (Set Ξ±)
S
),
IsChain: {Ξ± : Type ?u.17160} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· βŠ† Β·): Set Ξ± β†’ Set Ξ± β†’ Prop
(Β· βŠ† Β·)
c: ?m.17138
c
β†’ βˆƒ
ub: ?m.17189
ub
∈
S: Set (Set Ξ±)
S
, βˆ€
s: ?m.17210
s
∈
c: ?m.17138
c
,
s: ?m.17210
s
βŠ†
ub: ?m.17189
ub
) : βˆƒ
m: ?m.17266
m
∈
S: Set (Set Ξ±)
S
, βˆ€
a: ?m.17285
a
∈
S: Set (Set Ξ±)
S
,
m: ?m.17266
m
βŠ†
a: ?m.17285
a
β†’
a: ?m.17285
a
=
m: ?m.17266
m
:=
zorn_partialOrderβ‚€: βˆ€ {Ξ± : Type ?u.17350} [inst : PartialOrder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆƒ m, m ∈ s ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z = m
zorn_partialOrderβ‚€
S: Set (Set Ξ±)
S
h: βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ βˆƒ ub, ub ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ s βŠ† ub
h
#align zorn_subset
zorn_subset: βˆ€ {Ξ± : Type u_1} (S : Set (Set Ξ±)), (βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ βˆƒ ub, ub ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ s βŠ† ub) β†’ βˆƒ m, m ∈ S ∧ βˆ€ (a : Set Ξ±), a ∈ S β†’ m βŠ† a β†’ a = m
zorn_subset
theorem
zorn_subset_nonempty: βˆ€ (S : Set (Set Ξ±)), (βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ Set.Nonempty c β†’ βˆƒ ub, ub ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ s βŠ† ub) β†’ βˆ€ (x : Set Ξ±), x ∈ S β†’ βˆƒ m, m ∈ S ∧ x βŠ† m ∧ βˆ€ (a : Set Ξ±), a ∈ S β†’ m βŠ† a β†’ a = m
zorn_subset_nonempty
(
S: Set (Set Ξ±)
S
:
Set: Type ?u.17464 β†’ Type ?u.17464
Set
(
Set: Type ?u.17465 β†’ Type ?u.17465
Set
Ξ±: Type ?u.17449
Ξ±
)) (
H: βˆ€ (c : Set (Set Ξ±)) (x : c βŠ† S), IsChain (fun x_1 x_2 => x_1 βŠ† x_2) c β†’ Set.Nonempty c β†’ βˆƒ ub, ub ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ s βŠ† ub
H
: βˆ€ (
c: ?m.17469
c
) (
_: c βŠ† S
_
:
c: ?m.17469
c
βŠ†
S: Set (Set Ξ±)
S
),
IsChain: {Ξ± : Type ?u.17491} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· βŠ† Β·): Set Ξ± β†’ Set Ξ± β†’ Prop
(Β· βŠ† Β·)
c: ?m.17469
c
β†’
c: ?m.17469
c
.
Nonempty: {Ξ± : Type ?u.17518} β†’ Set Ξ± β†’ Prop
Nonempty
β†’ βˆƒ
ub: ?m.17526
ub
∈
S: Set (Set Ξ±)
S
, βˆ€
s: ?m.17547
s
∈
c: ?m.17469
c
,
s: ?m.17547
s
βŠ†
ub: ?m.17526
ub
) (
x: Set Ξ±
x
) (
hx: x ∈ S
hx
:
x: ?m.17600
x
∈
S: Set (Set Ξ±)
S
) : βˆƒ
m: ?m.17636
m
∈
S: Set (Set Ξ±)
S
,
x: ?m.17600
x
βŠ†
m: ?m.17636
m
∧ βˆ€
a: ?m.17660
a
∈
S: Set (Set Ξ±)
S
,
m: ?m.17636
m
βŠ†
a: ?m.17660
a
β†’
a: ?m.17660
a
=
m: ?m.17636
m
:=
zorn_nonempty_partialOrderβ‚€: βˆ€ {Ξ± : Type ?u.17727} [inst : PartialOrder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), x ∈ s β†’ βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z = m
zorn_nonempty_partialOrderβ‚€
_: Set ?m.17728
_
(fun
_: ?m.17732
_
cS: ?m.17735
cS
hc: ?m.17738
hc
y: ?m.17741
y
yc: ?m.17744
yc
=>
H: βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ Set.Nonempty c β†’ βˆƒ ub, ub ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ s βŠ† ub
H
_: Set (Set Ξ±)
_
cS: ?m.17735
cS
hc: ?m.17738
hc
⟨
y: ?m.17741
y
,
yc: ?m.17744
yc
⟩)
_: ?m.17728
_
hx: x ∈ S
hx
#align zorn_subset_nonempty
zorn_subset_nonempty: βˆ€ {Ξ± : Type u_1} (S : Set (Set Ξ±)), (βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ Set.Nonempty c β†’ βˆƒ ub, ub ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ s βŠ† ub) β†’ βˆ€ (x : Set Ξ±), x ∈ S β†’ βˆƒ m, m ∈ S ∧ x βŠ† m ∧ βˆ€ (a : Set Ξ±), a ∈ S β†’ m βŠ† a β†’ a = m
zorn_subset_nonempty
theorem
zorn_superset: βˆ€ (S : Set (Set Ξ±)), (βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ βˆƒ lb, lb ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ lb βŠ† s) β†’ βˆƒ m, m ∈ S ∧ βˆ€ (a : Set Ξ±), a ∈ S β†’ a βŠ† m β†’ a = m
zorn_superset
(
S: Set (Set Ξ±)
S
:
Set: Type ?u.17904 β†’ Type ?u.17904
Set
(
Set: Type ?u.17905 β†’ Type ?u.17905
Set
Ξ±: Type ?u.17889
Ξ±
)) (
h: βˆ€ (c : Set (Set Ξ±)) (x : c βŠ† S), IsChain (fun x_1 x_2 => x_1 βŠ† x_2) c β†’ βˆƒ lb, lb ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ lb βŠ† s
h
: βˆ€ (
c: ?m.17909
c
) (
_: c βŠ† S
_
:
c: ?m.17909
c
βŠ†
S: Set (Set Ξ±)
S
),
IsChain: {Ξ± : Type ?u.17931} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· βŠ† Β·): Set Ξ± β†’ Set Ξ± β†’ Prop
(Β· βŠ† Β·)
c: ?m.17909
c
β†’ βˆƒ
lb: ?m.17960
lb
∈
S: Set (Set Ξ±)
S
, βˆ€
s: ?m.17981
s
∈
c: ?m.17909
c
,
lb: ?m.17960
lb
βŠ†
s: ?m.17981
s
) : βˆƒ
m: ?m.18037
m
∈
S: Set (Set Ξ±)
S
, βˆ€
a: ?m.18056
a
∈
S: Set (Set Ξ±)
S
,
a: ?m.18056
a
βŠ†
m: ?m.18037
m
β†’
a: ?m.18056
a
=
m: ?m.18037
m
:= (@
zorn_partialOrderβ‚€: βˆ€ {Ξ± : Type ?u.18121} [inst : PartialOrder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆƒ m, m ∈ s ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z = m
zorn_partialOrderβ‚€
(
Set: Type ?u.18123 β†’ Type ?u.18123
Set
Ξ±: Type ?u.17889
Ξ±
)α΅’α΅ˆ _
S: Set (Set Ξ±)
S
) fun
c: ?m.18194
c
cS: ?m.18197
cS
hc: ?m.18200
hc
=>
h: βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ βˆƒ lb, lb ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ lb βŠ† s
h
c: ?m.18194
c
cS: ?m.18197
cS
hc: ?m.18200
hc
.
symm: βˆ€ {Ξ± : Type ?u.18211} {r : Ξ± β†’ Ξ± β†’ Prop} {s : Set Ξ±}, IsChain r s β†’ IsChain (flip r) s
symm
#align zorn_superset
zorn_superset: βˆ€ {Ξ± : Type u_1} (S : Set (Set Ξ±)), (βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ βˆƒ lb, lb ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ lb βŠ† s) β†’ βˆƒ m, m ∈ S ∧ βˆ€ (a : Set Ξ±), a ∈ S β†’ a βŠ† m β†’ a = m
zorn_superset
theorem
zorn_superset_nonempty: βˆ€ (S : Set (Set Ξ±)), (βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ Set.Nonempty c β†’ βˆƒ lb, lb ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ lb βŠ† s) β†’ βˆ€ (x : Set Ξ±), x ∈ S β†’ βˆƒ m, m ∈ S ∧ m βŠ† x ∧ βˆ€ (a : Set Ξ±), a ∈ S β†’ a βŠ† m β†’ a = m
zorn_superset_nonempty
(
S: Set (Set Ξ±)
S
:
Set: Type ?u.18293 β†’ Type ?u.18293
Set
(
Set: Type ?u.18294 β†’ Type ?u.18294
Set
Ξ±: Type ?u.18278
Ξ±
)) (
H: βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ Set.Nonempty c β†’ βˆƒ lb, lb ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ lb βŠ† s
H
: βˆ€ (
c: ?m.18298
c
) (
_: c βŠ† S
_
:
c: ?m.18298
c
βŠ†
S: Set (Set Ξ±)
S
),
IsChain: {Ξ± : Type ?u.18320} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
(Β· βŠ† Β·): Set Ξ± β†’ Set Ξ± β†’ Prop
(Β· βŠ† Β·)
c: ?m.18298
c
β†’
c: ?m.18298
c
.
Nonempty: {Ξ± : Type ?u.18347} β†’ Set Ξ± β†’ Prop
Nonempty
β†’ βˆƒ
lb: ?m.18355
lb
∈
S: Set (Set Ξ±)
S
, βˆ€
s: ?m.18376
s
∈
c: ?m.18298
c
,
lb: ?m.18355
lb
βŠ†
s: ?m.18376
s
) (
x: Set Ξ±
x
) (
hx: x ∈ S
hx
:
x: ?m.18429
x
∈
S: Set (Set Ξ±)
S
) : βˆƒ
m: ?m.18465
m
∈
S: Set (Set Ξ±)
S
,
m: ?m.18465
m
βŠ†
x: ?m.18429
x
∧ βˆ€
a: ?m.18489
a
∈
S: Set (Set Ξ±)
S
,
a: ?m.18489
a
βŠ†
m: ?m.18465
m
β†’
a: ?m.18489
a
=
m: ?m.18465
m
:= @
zorn_nonempty_partialOrderβ‚€: βˆ€ {Ξ± : Type ?u.18556} [inst : PartialOrder Ξ±] (s : Set Ξ±), (βˆ€ (c : Set Ξ±), c βŠ† s β†’ IsChain (fun x x_1 => x ≀ x_1) c β†’ βˆ€ (y : Ξ±), y ∈ c β†’ βˆƒ ub, ub ∈ s ∧ βˆ€ (z : Ξ±), z ∈ c β†’ z ≀ ub) β†’ βˆ€ (x : Ξ±), x ∈ s β†’ βˆƒ m, m ∈ s ∧ x ≀ m ∧ βˆ€ (z : Ξ±), z ∈ s β†’ m ≀ z β†’ z = m
zorn_nonempty_partialOrderβ‚€
(
Set: Type ?u.18558 β†’ Type ?u.18558
Set
Ξ±: Type ?u.18278
Ξ±
)α΅’α΅ˆ _
S: Set (Set Ξ±)
S
(fun
_: ?m.18563
_
cS: ?m.18566
cS
hc: ?m.18569
hc
y: ?m.18572
y
yc: ?m.18575
yc
=>
H: βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ Set.Nonempty c β†’ βˆƒ lb, lb ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ lb βŠ† s
H
_: Set (Set Ξ±)
_
cS: ?m.18566
cS
hc: ?m.18569
hc
.
symm: βˆ€ {Ξ± : Type ?u.18655} {r : Ξ± β†’ Ξ± β†’ Prop} {s : Set Ξ±}, IsChain r s β†’ IsChain (flip r) s
symm
⟨
y: ?m.18572
y
,
yc: ?m.18575
yc
⟩)
_: (Set Ξ±)α΅’α΅ˆ
_
hx: x ∈ S
hx
#align zorn_superset_nonempty
zorn_superset_nonempty: βˆ€ {Ξ± : Type u_1} (S : Set (Set Ξ±)), (βˆ€ (c : Set (Set Ξ±)), c βŠ† S β†’ IsChain (fun x x_1 => x βŠ† x_1) c β†’ Set.Nonempty c β†’ βˆƒ lb, lb ∈ S ∧ βˆ€ (s : Set Ξ±), s ∈ c β†’ lb βŠ† s) β†’ βˆ€ (x : Set Ξ±), x ∈ S β†’ βˆƒ m, m ∈ S ∧ m βŠ† x ∧ βˆ€ (a : Set Ξ±), a ∈ S β†’ a βŠ† m β†’ a = m
zorn_superset_nonempty
/-- Every chain is contained in a maximal chain. This generalizes Hausdorff's maximality principle. -/ theorem
IsChain.exists_maxChain: IsChain r c β†’ βˆƒ M, IsMaxChain r M ∧ c βŠ† M
IsChain.exists_maxChain
(
hc: IsChain r c
hc
:
IsChain: {Ξ± : Type ?u.18766} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsChain
r: Ξ± β†’ Ξ± β†’ Prop
r
c: Set Ξ±
c
) : βˆƒ
M: ?m.18781
M
, @
IsMaxChain: {Ξ± : Type ?u.18783} β†’ (Ξ± β†’ Ξ± β†’ Prop) β†’ Set Ξ± β†’ Prop
IsMaxChain
_: Type ?u.18783
_
r: Ξ± β†’ Ξ± β†’ Prop
r
M: ?m.18781
M
∧
c: Set Ξ±
c
βŠ†
M: ?m.18781
M
:=

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

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

H: βˆƒ m, m ∈ { s | c βŠ† s ∧ IsChain r s } ∧ c βŠ† m ∧ βˆ€ (a : Set Ξ±), a ∈ { s | c βŠ† s ∧ IsChain r s } β†’ m βŠ† a β†’ a = m


refine_2
βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


refine_1
βˆ€ (c_1 : Set (Set Ξ±)), c_1 βŠ† { s | c βŠ† s ∧ IsChain r s } β†’ IsChain (fun x x_1 => x βŠ† x_1) c_1 β†’ Set.Nonempty c_1 β†’ βˆƒ ub, ub ∈ { s | c βŠ† s ∧ IsChain r s } ∧ βˆ€ (s : Set Ξ±), s ∈ c_1 β†’ s βŠ† ub
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

H: βˆƒ m, m ∈ { s | c βŠ† s ∧ IsChain r s } ∧ c βŠ† m ∧ βˆ€ (a : Set Ξ±), a ∈ { s | c βŠ† s ∧ IsChain r s } β†’ m βŠ† a β†’ a = m


refine_2
βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

H: βˆƒ m, m ∈ { s | c βŠ† s ∧ IsChain r s } ∧ c βŠ† m ∧ βˆ€ (a : Set Ξ±), a ∈ { s | c βŠ† s ∧ IsChain r s } β†’ m βŠ† a β†’ a = m


refine_2
βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


refine_1
βˆ€ (c_1 : Set (Set Ξ±)), c_1 βŠ† { s | c βŠ† s ∧ IsChain r s } β†’ IsChain (fun x x_1 => x βŠ† x_1) c_1 β†’ Set.Nonempty c_1 β†’ βˆƒ ub, ub ∈ { s | c βŠ† s ∧ IsChain r s } ∧ βˆ€ (s : Set Ξ±), s ∈ c_1 β†’ s βŠ† ub
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

M: Set Ξ±

left✝: c βŠ† M

hMβ‚€: IsChain r M

hM₁: c βŠ† M

hMβ‚‚: βˆ€ (a : Set Ξ±), a ∈ { s | c βŠ† s ∧ IsChain r s } β†’ M βŠ† a β†’ a = M


refine_2.intro.intro.intro.intro
βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

H: βˆƒ m, m ∈ { s | c βŠ† s ∧ IsChain r s } ∧ c βŠ† m ∧ βˆ€ (a : Set Ξ±), a ∈ { s | c βŠ† s ∧ IsChain r s } β†’ m βŠ† a β†’ a = m


refine_2
βˆƒ M, IsMaxChain r M ∧ c βŠ† M

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

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs


refine_1.intro
βˆƒ ub, ub ∈ { s | c βŠ† s ∧ IsChain r s } ∧ βˆ€ (s : Set Ξ±), s ∈ cs β†’ s βŠ† ub
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs


refine_1.intro
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z


refine_1.intro.intro.intro.intro.intro
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

hyz: y β‰  z

hsz: sy ∈ cs

hzsz: z ∈ sy


refine_1.intro.intro.intro.intro.intro.inl
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z

hsseq: sy β‰  sz


refine_1.intro.intro.intro.intro.intro.inr
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

hyz: y β‰  z

hsz: sy ∈ cs

hzsz: z ∈ sy


refine_1.intro.intro.intro.intro.intro.inl
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

hyz: y β‰  z

hsz: sy ∈ cs

hzsz: z ∈ sy


refine_1.intro.intro.intro.intro.intro.inl
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z

hsseq: sy β‰  sz


refine_1.intro.intro.intro.intro.intro.inr
r y z ∨ r z y

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

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z

hsseq: sy β‰  sz

h: (fun x x_1 => x βŠ† x_1) sy sz


refine_1.intro.intro.intro.intro.intro.inr.inl
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z

hsseq: sy β‰  sz

h: (fun x x_1 => x βŠ† x_1) sz sy


refine_1.intro.intro.intro.intro.intro.inr.inr
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z

hsseq: sy β‰  sz

h: (fun x x_1 => x βŠ† x_1) sy sz


refine_1.intro.intro.intro.intro.intro.inr.inl
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z

hsseq: sy β‰  sz

h: (fun x x_1 => x βŠ† x_1) sy sz


refine_1.intro.intro.intro.intro.intro.inr.inl
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z

hsseq: sy β‰  sz

h: (fun x x_1 => x βŠ† x_1) sz sy


refine_1.intro.intro.intro.intro.intro.inr.inr
r y z ∨ r z y

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

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c


βˆƒ M, IsMaxChain r M ∧ c βŠ† M
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z

hsseq: sy β‰  sz

h: (fun x x_1 => x βŠ† x_1) sz sy


refine_1.intro.intro.intro.intro.intro.inr.inr
r y z ∨ r z y
Ξ±: Type u_1

Ξ²: Type ?u.18754

r: Ξ± β†’ Ξ± β†’ Prop

c: Set Ξ±

hc: IsChain r c

cs: Set (Set Ξ±)

hcsβ‚€: cs βŠ† { s | c βŠ† s ∧ IsChain r s }

hcs₁: IsChain (fun x x_1 => x βŠ† x_1) cs

s: Set Ξ±

hs: s ∈ cs

y: Ξ±

sy: Set Ξ±

hsy: sy ∈ cs

hysy: y ∈ sy

z: Ξ±

sz: Set Ξ±

hsz: sz ∈ cs

hzsz: z ∈ sz

hyz: y β‰  z

hsseq: sy β‰  sz

h: (fun x x_1 => x βŠ† x_1) sz sy


refine_1.intro.intro.intro.intro.intro.inr.inr
r y z ∨ r z y

Goals accomplished! πŸ™
#align is_chain.exists_max_chain
IsChain.exists_maxChain: βˆ€ {Ξ± : Type u_1} {r : Ξ± β†’ Ξ± β†’ Prop} {c : Set Ξ±}, IsChain r c β†’ βˆƒ M, IsMaxChain r M ∧ c βŠ† M
IsChain.exists_maxChain