Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: A constructive Cantor–Schröder–Bernstein theorem? #1206

Draft
wants to merge 76 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 71 commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
71282b5
move some lemmas for decidable dependent types
fredrik-bakke Oct 18, 2024
39535e4
edits
fredrik-bakke Oct 19, 2024
7dd26b3
additions double negation elimination
fredrik-bakke Oct 19, 2024
c96818b
Knaster–Tarski fixed point theorem for suplattices
fredrik-bakke Oct 19, 2024
478a321
pre-commit
fredrik-bakke Oct 19, 2024
76af929
inflattices
fredrik-bakke Oct 19, 2024
a2b91a5
Knaster–Tarski fixed point theorem for inflattices
fredrik-bakke Oct 19, 2024
2931aa2
edits
fredrik-bakke Oct 19, 2024
ebe30a4
imrpove proof `is-decidable-prop-Σ`
fredrik-bakke Oct 19, 2024
d6a81a3
edits
fredrik-bakke Oct 19, 2024
1fa059d
double negation eliminating
fredrik-bakke Oct 20, 2024
b40c770
wip double negation stable embeddings
fredrik-bakke Oct 20, 2024
c8d64e6
wip double negation stable embeddings
fredrik-bakke Oct 20, 2024
215cff5
wip double negation stable embeddings
fredrik-bakke Oct 20, 2024
06c3ca7
just edits
fredrik-bakke Oct 20, 2024
d06ea12
constructive analysis of perfect images
fredrik-bakke Oct 20, 2024
34a45e7
`untruncated-double-negation-elimination` -> `double-negation-elimina…
fredrik-bakke Oct 20, 2024
109c026
Composition of double negation eliminating maps
fredrik-bakke Oct 20, 2024
488c9ba
double negation stable subtypes
fredrik-bakke Oct 20, 2024
ac08a78
Cantor's theorem for double negation
fredrik-bakke Oct 20, 2024
6d05ab9
minor fixes
fredrik-bakke Oct 20, 2024
4524c35
some order theory
fredrik-bakke Oct 20, 2024
bab6557
some order theory on powersets
fredrik-bakke Oct 20, 2024
3e81207
pre-commit
fredrik-bakke Oct 20, 2024
1148b00
wip constructive csbe
fredrik-bakke Oct 20, 2024
801f7a1
Merge branch 'master' into csbe
fredrik-bakke Oct 20, 2024
bbc3136
pre-commit
fredrik-bakke Oct 20, 2024
a477494
edits dne
fredrik-bakke Oct 20, 2024
8c93ca3
fixes double negation stable embeddings
fredrik-bakke Oct 20, 2024
30acb17
fix
fredrik-bakke Oct 20, 2024
e942157
some additional opposites
fredrik-bakke Oct 20, 2024
b10fd18
more edits order theory
fredrik-bakke Oct 20, 2024
2ca4c2a
fix
fredrik-bakke Oct 20, 2024
91b4174
fix links
fredrik-bakke Oct 21, 2024
2ec613b
informal proof constructive csbe
fredrik-bakke Oct 21, 2024
f99c780
Double negation elimination is irrefutable
fredrik-bakke Oct 21, 2024
bce6686
wip logic
fredrik-bakke Oct 25, 2024
fb35a57
wip logic
fredrik-bakke Oct 25, 2024
773cea5
wip logic
fredrik-bakke Oct 25, 2024
37fc00e
dcpos
fredrik-bakke Oct 27, 2024
7b20895
edits
fredrik-bakke Oct 29, 2024
654571b
composition of decidable maps
fredrik-bakke Oct 29, 2024
2da0b76
a bunch of logic
fredrik-bakke Nov 1, 2024
d902d66
wip resizing orders
fredrik-bakke Nov 1, 2024
1e6e8bc
more lemmas about de morgan embeddings
fredrik-bakke Nov 1, 2024
2b169b1
propositional resizing
fredrik-bakke Nov 2, 2024
0bfd3c1
resizing suplattices
fredrik-bakke Nov 2, 2024
6806b9e
pre-commit
fredrik-bakke Nov 2, 2024
f603862
supremum preserving maps posets
fredrik-bakke Nov 2, 2024
3f4940e
deduplicate domain theory
fredrik-bakke Nov 2, 2024
43baf83
lemmas supremum preserving maps of posets
fredrik-bakke Nov 2, 2024
291cde7
Reindexing directed families in a poset
fredrik-bakke Nov 2, 2024
2d4fde2
scott continuous maps of posets
fredrik-bakke Nov 2, 2024
d921b43
complements of double negation stable subtypes
fredrik-bakke Nov 2, 2024
5276bcc
old wip constructive csb
fredrik-bakke Nov 2, 2024
ab02816
fixes cantor's theorem de morgan
fredrik-bakke Nov 2, 2024
15d990a
remove allow unsolved metas
fredrik-bakke Nov 2, 2024
f168e29
beginnings Kleene's fixed point theorem
fredrik-bakke Nov 2, 2024
2e9a891
complements of de morgan subtypes
fredrik-bakke Nov 2, 2024
366d922
de morgan disjunctions
fredrik-bakke Nov 3, 2024
060b6ad
inhabited chains
fredrik-bakke Nov 3, 2024
f366bf9
wip
fredrik-bakke Nov 3, 2024
36fc5f3
ω-Continuous maps preserve order
fredrik-bakke Nov 4, 2024
59ead07
a little renaming
fredrik-bakke Nov 4, 2024
f7a2351
kleene's fixed point construction
fredrik-bakke Nov 4, 2024
0f3aa23
finish Kleene's fixed point theorem for posets
fredrik-bakke Nov 4, 2024
16edf8d
Kleene's fixed point theorem for ω-complete posets
fredrik-bakke Nov 4, 2024
461d6c2
pre-commit
fredrik-bakke Nov 4, 2024
91c0cc5
Markov's principle
fredrik-bakke Nov 4, 2024
328087e
finitary De Morgan's law
fredrik-bakke Nov 5, 2024
0b9ea90
some wording kleene's fixed point theorem
fredrik-bakke Nov 5, 2024
5b54ec7
`is-decidable-map-section`
fredrik-bakke Nov 6, 2024
ce4bb00
fix a reference
fredrik-bakke Nov 18, 2024
e66ea7d
some additions to logic
fredrik-bakke Nov 18, 2024
e68907d
edits
fredrik-bakke Nov 18, 2024
4324b4a
Merge branch 'master' into csbe
fredrik-bakke Nov 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,25 @@ @article{EKMS93
keywords = {axiality,closure operation,Galois connection,interior operation,polarity}
}

@article{Esc08,
author = {Escardó, Martín},
title = {Exhaustible sets in higher-type computation},
journal = {Logical Methods in Computer Science},
volume = {4},
year = {2008},
month = {8},
number = {3},
issue = {3},
publisher = {Centre pour la Communication Scientifique Directe (CCSD)},
pages = {3:3, 37},
issn = {1860-5974},
doi = {10.2168/LMCS-4(3:3)2008},
eprint = {0808.0441},
eprinttype = {arxiv},
eprintclass = {cs},
primaryclass = {cs.LO}
}

@online{Esc19DefinitionsEquivalence,
title = {Definitions of Equivalence Satisfying Judgmental/Strict Groupoid Laws?},
author = {Escardó, Martín Hötzel},
Expand Down
13 changes: 13 additions & 0 deletions src/category-theory/opposite-large-precategories.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.homotopies
open import foundation.identity-types
open import foundation.large-identity-types
open import foundation.sets
open import foundation.strictly-involutive-identity-types
open import foundation.universe-levels
Expand Down Expand Up @@ -141,6 +142,18 @@ module _

## Properties

### The opposite large precategory construction is a strict involution

```agda
module _
{α : Level → Level} {β : Level → Level → Level} (C : Large-Precategory α β)
where

is-involution-opposite-Large-Precategory :
opposite-Large-Precategory (opposite-Large-Precategory C) =ω C
is-involution-opposite-Large-Precategory = reflω
```

### Computing the isomorphism sets of the opposite large precategory

```agda
Expand Down
14 changes: 14 additions & 0 deletions src/domain-theory.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Domain theory

```agda
module domain-theory where

open import domain-theory.directed-complete-posets public
open import domain-theory.directed-families-posets public
open import domain-theory.kleenes-fixed-point-theorem-omega-complete-posets public
open import domain-theory.kleenes-fixed-point-theorem-posets public
open import domain-theory.omega-complete-posets public
open import domain-theory.omega-continuous-maps-omega-complete-posets public
open import domain-theory.omega-continuous-maps-posets public
open import domain-theory.scott-continuous-maps-posets public
```
174 changes: 174 additions & 0 deletions src/domain-theory/directed-complete-posets.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
# Directed complete posets
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible to move existing files in a separate pull request that only moves files, like I did in #1223 to preserve your authorship of some files about globular types?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure! I'll see about how to solve this

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you mind answering my question above in the PR, btw?


```agda
module domain-theory.directed-complete-posets where
```

<details><summary>Imports</summary>

```agda
open import domain-theory.directed-families-posets

open import foundation.binary-relations
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.function-types
open import foundation.logical-equivalences
open import foundation.propositions
open import foundation.sets
open import foundation.universe-levels

open import order-theory.least-upper-bounds-posets
open import order-theory.posets
```

</details>

## Idea

A
{{#concept "directed complete poset" WD="complete partial order" WDID=Q3082805 Agda=Directed-Complete-Poset}}
is a [poset](order-theory.posets.md) such that all
[directed families](domain-theory.directed-families-posets.md) have
[least upper bounds](order-theory.least-upper-bounds-posets.md).

## Definitions

### The predicate on posets of being a directed complete poset

```agda
module _
{l1 l2 : Level} (l3 : Level) (P : Poset l1 l2)
where

is-directed-complete-Poset-Prop : Prop (l1 ⊔ l2 ⊔ lsuc l3)
is-directed-complete-Poset-Prop =
Π-Prop
( directed-family-Poset l3 P)
( λ F →
has-least-upper-bound-family-of-elements-prop-Poset P
( family-directed-family-Poset P F))

is-directed-complete-Poset : UU (l1 ⊔ l2 ⊔ lsuc l3)
is-directed-complete-Poset =
type-Prop is-directed-complete-Poset-Prop

is-prop-is-directed-complete-Poset : is-prop is-directed-complete-Poset
is-prop-is-directed-complete-Poset =
is-prop-type-Prop is-directed-complete-Poset-Prop

module _
{l1 l2 l3 : Level} (P : Poset l1 l2) (H : is-directed-complete-Poset l3 P)
where

sup-is-directed-complete-Poset : directed-family-Poset l3 P → type-Poset P
sup-is-directed-complete-Poset F = pr1 (H F)

is-least-upper-bound-sup-is-directed-complete-Poset :
(x : directed-family-Poset l3 P) →
is-least-upper-bound-family-of-elements-Poset P
( family-directed-family-Poset P x)
( sup-is-directed-complete-Poset x)
is-least-upper-bound-sup-is-directed-complete-Poset F = pr2 (H F)
```

### Directed complete posets

```agda
Directed-Complete-Poset :
(l1 l2 l3 : Level) → UU (lsuc l1 ⊔ lsuc l2 ⊔ lsuc l3)
Directed-Complete-Poset l1 l2 l3 =
Σ (Poset l1 l2) (is-directed-complete-Poset l3)

module _
{l1 l2 l3 : Level} (A : Directed-Complete-Poset l1 l2 l3)
where

poset-Directed-Complete-Poset : Poset l1 l2
poset-Directed-Complete-Poset = pr1 A

type-Directed-Complete-Poset : UU l1
type-Directed-Complete-Poset =
type-Poset poset-Directed-Complete-Poset

leq-prop-Directed-Complete-Poset :
(x y : type-Directed-Complete-Poset) → Prop l2
leq-prop-Directed-Complete-Poset =
leq-prop-Poset poset-Directed-Complete-Poset

leq-Directed-Complete-Poset :
(x y : type-Directed-Complete-Poset) → UU l2
leq-Directed-Complete-Poset =
leq-Poset poset-Directed-Complete-Poset

is-prop-leq-Directed-Complete-Poset :
(x y : type-Directed-Complete-Poset) →
is-prop (leq-Directed-Complete-Poset x y)
is-prop-leq-Directed-Complete-Poset =
is-prop-leq-Poset poset-Directed-Complete-Poset

refl-leq-Directed-Complete-Poset :
(x : type-Directed-Complete-Poset) →
leq-Directed-Complete-Poset x x
refl-leq-Directed-Complete-Poset =
refl-leq-Poset poset-Directed-Complete-Poset

antisymmetric-leq-Directed-Complete-Poset :
is-antisymmetric leq-Directed-Complete-Poset
antisymmetric-leq-Directed-Complete-Poset =
antisymmetric-leq-Poset poset-Directed-Complete-Poset

transitive-leq-Directed-Complete-Poset :
is-transitive leq-Directed-Complete-Poset
transitive-leq-Directed-Complete-Poset =
transitive-leq-Poset poset-Directed-Complete-Poset

is-set-type-Directed-Complete-Poset :
is-set type-Directed-Complete-Poset
is-set-type-Directed-Complete-Poset =
is-set-type-Poset poset-Directed-Complete-Poset

set-Directed-Complete-Poset : Set l1
set-Directed-Complete-Poset =
set-Poset poset-Directed-Complete-Poset

is-directed-complete-Directed-Complete-Poset :
is-directed-complete-Poset l3 poset-Directed-Complete-Poset
is-directed-complete-Directed-Complete-Poset = pr2 A

sup-Directed-Complete-Poset :
directed-family-Poset l3 poset-Directed-Complete-Poset →
type-Directed-Complete-Poset
sup-Directed-Complete-Poset =
sup-is-directed-complete-Poset
( poset-Directed-Complete-Poset)
( is-directed-complete-Directed-Complete-Poset)

is-least-upper-bound-sup-Directed-Complete-Poset :
(x : directed-family-Poset l3 poset-Directed-Complete-Poset) →
is-least-upper-bound-family-of-elements-Poset
( poset-Directed-Complete-Poset)
( family-directed-family-Poset poset-Directed-Complete-Poset x)
( sup-Directed-Complete-Poset x)
is-least-upper-bound-sup-Directed-Complete-Poset =
is-least-upper-bound-sup-is-directed-complete-Poset
( poset-Directed-Complete-Poset)
( is-directed-complete-Directed-Complete-Poset)

leq-sup-Directed-Complete-Poset :
(x : directed-family-Poset l3 poset-Directed-Complete-Poset)
(i : type-directed-family-Poset poset-Directed-Complete-Poset x) →
leq-Directed-Complete-Poset
( family-directed-family-Poset poset-Directed-Complete-Poset x i)
( sup-Directed-Complete-Poset x)
leq-sup-Directed-Complete-Poset x =
backward-implication
( is-least-upper-bound-sup-Directed-Complete-Poset
( x)
( sup-Directed-Complete-Poset x))
( refl-leq-Directed-Complete-Poset (sup-Directed-Complete-Poset x))
```

## External links

- [dcpo](https://ncatlab.org/nlab/show/dcpo) at $n$Lab
Loading