Skip to content

Commit 7b80669

Browse files
authored
Apartness of reals agrees with apartness in the heyting field (#1744)
1 parent 36823a3 commit 7b80669

8 files changed

+265
-21
lines changed

src/commutative-algebra/heyting-fields.lagda.md

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,23 @@ open import commutative-algebra.invertible-elements-commutative-rings
1212
open import commutative-algebra.local-commutative-rings
1313
open import commutative-algebra.trivial-commutative-rings
1414
15+
open import foundation.apartness-relations
16+
open import foundation.binary-relations
1517
open import foundation.conjunction
1618
open import foundation.dependent-pair-types
19+
open import foundation.function-types
20+
open import foundation.functoriality-disjunction
21+
open import foundation.identity-types
1722
open import foundation.negation
1823
open import foundation.propositions
1924
open import foundation.sets
2025
open import foundation.subtypes
26+
open import foundation.tight-apartness-relations
27+
open import foundation.transport-along-identifications
2128
open import foundation.universe-levels
2229
30+
open import group-theory.abelian-groups
31+
2332
open import ring-theory.rings
2433
```
2534

@@ -88,9 +97,18 @@ module _
8897
commutative-ring-Heyting-Field =
8998
commutative-ring-Local-Commutative-Ring local-commutative-ring-Heyting-Field
9099
100+
is-local-commutative-ring-Heyting-Field :
101+
is-local-Commutative-Ring commutative-ring-Heyting-Field
102+
is-local-commutative-ring-Heyting-Field =
103+
is-local-commutative-ring-Local-Commutative-Ring
104+
( local-commutative-ring-Heyting-Field)
105+
91106
ring-Heyting-Field : Ring l
92107
ring-Heyting-Field = ring-Commutative-Ring commutative-ring-Heyting-Field
93108
109+
ab-Heyting-Field : Ab l
110+
ab-Heyting-Field = ab-Ring ring-Heyting-Field
111+
94112
type-Heyting-Field : UU l
95113
type-Heyting-Field = type-Ring ring-Heyting-Field
96114
@@ -100,6 +118,9 @@ module _
100118
zero-Heyting-Field : type-Heyting-Field
101119
zero-Heyting-Field = zero-Ring ring-Heyting-Field
102120
121+
is-zero-Heyting-Field : type-Heyting-Field → UU l
122+
is-zero-Heyting-Field = is-zero-Ring ring-Heyting-Field
123+
103124
one-Heyting-Field : type-Heyting-Field
104125
one-Heyting-Field = one-Ring ring-Heyting-Field
105126
@@ -113,6 +134,152 @@ module _
113134
114135
neg-Heyting-Field : type-Heyting-Field → type-Heyting-Field
115136
neg-Heyting-Field = neg-Ring ring-Heyting-Field
137+
138+
diff-Heyting-Field :
139+
type-Heyting-Field → type-Heyting-Field → type-Heyting-Field
140+
diff-Heyting-Field x y =
141+
add-Heyting-Field x (neg-Heyting-Field y)
142+
143+
is-invertible-element-prop-Heyting-Field : type-Heyting-Field → Prop l
144+
is-invertible-element-prop-Heyting-Field =
145+
is-invertible-element-prop-Commutative-Ring commutative-ring-Heyting-Field
146+
147+
is-invertible-element-Heyting-Field : type-Heyting-Field → UU l
148+
is-invertible-element-Heyting-Field x =
149+
type-Prop (is-invertible-element-prop-Heyting-Field x)
150+
151+
is-zero-is-not-invertible-element-Heyting-Field :
152+
(x : type-Heyting-Field) → ¬ (is-invertible-element-Heyting-Field x) →
153+
is-zero-Heyting-Field x
154+
is-zero-is-not-invertible-element-Heyting-Field = pr2 (pr2 F)
155+
156+
is-nontrivial-commutative-ring-Heyting-Field :
157+
is-nontrivial-Commutative-Ring commutative-ring-Heyting-Field
158+
is-nontrivial-commutative-ring-Heyting-Field = pr1 (pr2 F)
159+
160+
right-inverse-law-add-Heyting-Field :
161+
(x : type-Heyting-Field) → diff-Heyting-Field x x = zero-Heyting-Field
162+
right-inverse-law-add-Heyting-Field =
163+
right-inverse-law-add-Ring ring-Heyting-Field
164+
165+
left-zero-law-mul-Heyting-Field :
166+
(x : type-Heyting-Field) →
167+
mul-Heyting-Field zero-Heyting-Field x = zero-Heyting-Field
168+
left-zero-law-mul-Heyting-Field = left-zero-law-mul-Ring ring-Heyting-Field
169+
170+
ap-mul-Heyting-Field :
171+
{x x' y y' : type-Heyting-Field} → x = x' → y = y' →
172+
mul-Heyting-Field x y = mul-Heyting-Field x' y'
173+
ap-mul-Heyting-Field = ap-mul-Ring ring-Heyting-Field
174+
175+
mul-neg-Heyting-Field :
176+
(x y : type-Heyting-Field) →
177+
mul-Heyting-Field (neg-Heyting-Field x) (neg-Heyting-Field y) =
178+
mul-Heyting-Field x y
179+
mul-neg-Heyting-Field = mul-neg-Ring ring-Heyting-Field
180+
181+
distributive-neg-diff-Heyting-Field :
182+
(x y : type-Heyting-Field) →
183+
neg-Heyting-Field (diff-Heyting-Field x y) = diff-Heyting-Field y x
184+
distributive-neg-diff-Heyting-Field =
185+
neg-right-subtraction-Ab ab-Heyting-Field
186+
187+
commutative-mul-Heyting-Field :
188+
(x y : type-Heyting-Field) → mul-Heyting-Field x y = mul-Heyting-Field y x
189+
commutative-mul-Heyting-Field =
190+
commutative-mul-Commutative-Ring commutative-ring-Heyting-Field
191+
192+
add-diff-Heyting-Field :
193+
(x y z : type-Heyting-Field) →
194+
add-Heyting-Field (diff-Heyting-Field x y) (diff-Heyting-Field y z) =
195+
diff-Heyting-Field x z
196+
add-diff-Heyting-Field =
197+
add-right-subtraction-Ab ab-Heyting-Field
198+
199+
eq-is-zero-diff-Heyting-Field :
200+
(x y : type-Heyting-Field) →
201+
is-zero-Heyting-Field (diff-Heyting-Field x y) →
202+
x = y
203+
eq-is-zero-diff-Heyting-Field x y =
204+
eq-is-zero-right-subtraction-Ab ab-Heyting-Field
205+
```
206+
207+
## Properties
208+
209+
### Invertibility of `x - y` is a tight apartness relation
210+
211+
```agda
212+
module _
213+
{l : Level}
214+
(F : Heyting-Field l)
215+
where
216+
217+
apart-prop-Heyting-Field : Relation-Prop l (type-Heyting-Field F)
218+
apart-prop-Heyting-Field x y =
219+
is-invertible-element-prop-Heyting-Field F (diff-Heyting-Field F x y)
220+
221+
apart-Heyting-Field : Relation l (type-Heyting-Field F)
222+
apart-Heyting-Field = type-Relation-Prop apart-prop-Heyting-Field
223+
224+
abstract
225+
antirefl-apart-Heyting-Field : is-antireflexive apart-prop-Heyting-Field
226+
antirefl-apart-Heyting-Field x is-invertible-x-x =
227+
is-nontrivial-commutative-ring-Heyting-Field
228+
( F)
229+
( is-trivial-is-invertible-zero-Commutative-Ring
230+
( commutative-ring-Heyting-Field F)
231+
( tr
232+
( is-invertible-element-Heyting-Field F)
233+
( right-inverse-law-add-Heyting-Field F x)
234+
( is-invertible-x-x)))
235+
236+
symmetric-apart-Heyting-Field : is-symmetric apart-Heyting-Field
237+
symmetric-apart-Heyting-Field x y is-invertible-⟨x-y⟩ =
238+
tr
239+
( is-invertible-element-Heyting-Field F)
240+
( distributive-neg-diff-Heyting-Field F x y)
241+
( is-invertible-element-neg-is-invertible-element-Commutative-Ring
242+
( commutative-ring-Heyting-Field F)
243+
( _)
244+
( is-invertible-⟨x-y⟩))
245+
246+
cotransitive-apart-Heyting-Field :
247+
is-cotransitive apart-prop-Heyting-Field
248+
cotransitive-apart-Heyting-Field x y z is-invertible-⟨x-y⟩ =
249+
map-disjunction
250+
( id)
251+
( symmetric-apart-Heyting-Field z y)
252+
( is-local-commutative-ring-Heyting-Field F
253+
( diff-Heyting-Field F x z)
254+
( diff-Heyting-Field F z y)
255+
( inv-tr
256+
( is-invertible-element-Heyting-Field F)
257+
( add-diff-Heyting-Field F x z y)
258+
( is-invertible-⟨x-y⟩)))
259+
260+
apartness-relation-Heyting-Field : Apartness-Relation l (type-Heyting-Field F)
261+
apartness-relation-Heyting-Field =
262+
( apart-prop-Heyting-Field ,
263+
antirefl-apart-Heyting-Field ,
264+
symmetric-apart-Heyting-Field ,
265+
cotransitive-apart-Heyting-Field)
266+
267+
abstract
268+
is-tight-apartness-relation-Heyting-Field :
269+
is-tight-Apartness-Relation apartness-relation-Heyting-Field
270+
is-tight-apartness-relation-Heyting-Field x y ¬apart-x-y =
271+
eq-is-zero-diff-Heyting-Field F
272+
( x)
273+
( y)
274+
( is-zero-is-not-invertible-element-Heyting-Field F
275+
( diff-Heyting-Field F x y)
276+
( ¬apart-x-y))
277+
278+
tight-apartness-relation-Heyting-Field :
279+
Tight-Apartness-Relation l (type-Heyting-Field F)
280+
tight-apartness-relation-Heyting-Field =
281+
( apartness-relation-Heyting-Field ,
282+
is-tight-apartness-relation-Heyting-Field)
116283
```
117284

118285
## External links

src/commutative-algebra/invertible-elements-commutative-rings.lagda.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,22 @@ module _
341341
( ring-Commutative-Ring A)
342342
```
343343

344+
### The negation of an invertible element is invertible
345+
346+
```agda
347+
module _
348+
{l : Level} (A : Commutative-Ring l)
349+
where
350+
351+
abstract
352+
is-invertible-element-neg-is-invertible-element-Commutative-Ring :
353+
(x : type-Commutative-Ring A)
354+
(H : is-invertible-element-Commutative-Ring A x) →
355+
is-invertible-element-Commutative-Ring A (neg-Commutative-Ring A x)
356+
is-invertible-element-neg-is-invertible-element-Commutative-Ring =
357+
is-invertible-element-neg-Ring (ring-Commutative-Ring A)
358+
```
359+
344360
## See also
345361

346362
- The group of multiplicative units of a commutative ring is defined in

src/commutative-algebra/trivial-commutative-rings.lagda.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module commutative-algebra.trivial-commutative-rings where
88

99
```agda
1010
open import commutative-algebra.commutative-rings
11+
open import commutative-algebra.invertible-elements-commutative-rings
1112
open import commutative-algebra.isomorphisms-commutative-rings
1213
1314
open import foundation.contractible-types
@@ -109,6 +110,31 @@ is-trivial-trivial-Commutative-Ring :
109110
is-trivial-trivial-Commutative-Ring = refl
110111
```
111112

113+
### The zero of a commutative ring is invertible if and only if the commutative ring is trivial
114+
115+
```agda
116+
module _
117+
{l : Level} (R : Commutative-Ring l)
118+
where
119+
120+
abstract
121+
is-invertible-zero-is-trivial-Commutative-Ring :
122+
is-trivial-Commutative-Ring R →
123+
is-invertible-element-Commutative-Ring R (zero-Commutative-Ring R)
124+
is-invertible-zero-is-trivial-Commutative-Ring 0=1 =
125+
( one-Commutative-Ring R ,
126+
( ( ap-mul-Commutative-Ring R 0=1 refl) ∙
127+
( right-unit-law-mul-Commutative-Ring R _)) ,
128+
( ( ap-mul-Commutative-Ring R refl 0=1) ∙
129+
( left-unit-law-mul-Commutative-Ring R _)))
130+
131+
is-trivial-is-invertible-zero-Commutative-Ring :
132+
is-invertible-element-Commutative-Ring R (zero-Commutative-Ring R) →
133+
is-trivial-Commutative-Ring R
134+
is-trivial-is-invertible-zero-Commutative-Ring (r , 0r=1 , _) =
135+
inv (left-zero-law-mul-Commutative-Ring R r) ∙ 0r=1
136+
```
137+
112138
### The type of trivial rings is contractible
113139

114140
To-do: complete proof of uniqueness of the zero ring using SIP, ideally refactor

src/real-numbers/apartness-real-numbers.lagda.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ module _
285285
( sim-eq-ℝ (left-unit-law-add-ℝ y))
286286
( preserves-apart-right-add-ℝ y _ _ x-y#0)
287287
288+
apart-iff-is-nonzero-diff-ℝ : (apart-ℝ x y) ↔ (is-nonzero-ℝ (x -ℝ y))
289+
apart-iff-is-nonzero-diff-ℝ =
290+
( is-nonzero-diff-is-apart-ℝ , apart-is-nonzero-diff-ℝ)
291+
288292
nonzero-diff-apart-ℝ : apart-ℝ x y → nonzero-ℝ (l1 ⊔ l2)
289293
nonzero-diff-apart-ℝ x#y = (x -ℝ y , is-nonzero-diff-is-apart-ℝ x#y)
290294
```

src/real-numbers/field-of-real-numbers.lagda.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,19 @@ open import commutative-algebra.trivial-commutative-rings
1414
open import elementary-number-theory.rational-numbers
1515
1616
open import foundation.dependent-pair-types
17+
open import foundation.function-types
1718
open import foundation.identity-types
19+
open import foundation.logical-equivalences
1820
open import foundation.negated-equality
1921
open import foundation.negation
2022
open import foundation.universe-levels
2123
2224
open import real-numbers.apartness-real-numbers
2325
open import real-numbers.dedekind-real-numbers
26+
open import real-numbers.difference-real-numbers
2427
open import real-numbers.large-ring-of-real-numbers
2528
open import real-numbers.local-ring-of-real-numbers
29+
open import real-numbers.multiplication-nonzero-real-numbers
2630
open import real-numbers.multiplicative-inverses-nonzero-real-numbers
2731
open import real-numbers.raising-universe-levels-real-numbers
2832
open import real-numbers.rational-real-numbers
@@ -71,3 +75,16 @@ heyting-field-ℝ l =
7175
( local-commutative-ring-ℝ l ,
7276
is-heyting-field-local-commutative-ring-ℝ l)
7377
```
78+
79+
## Properties
80+
81+
### The apartness relation of the Heyting field of real numbers agrees with the apartness relation of the real numbers
82+
83+
```agda
84+
apart-iff-apart-heyting-field-ℝ :
85+
{l : Level} (x y : ℝ l) →
86+
(apart-ℝ x y) ↔ (apart-Heyting-Field (heyting-field-ℝ l) x y)
87+
apart-iff-apart-heyting-field-ℝ x y =
88+
( inv-iff (is-invertible-iff-is-nonzero-ℝ (x -ℝ y))) ∘iff
89+
( apart-iff-is-nonzero-diff-ℝ x y)
90+
```

src/real-numbers/multiplication-nonzero-real-numbers.lagda.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ open import foundation.dependent-pair-types
1717
open import foundation.disjunction
1818
open import foundation.function-types
1919
open import foundation.functoriality-cartesian-product-types
20+
open import foundation.logical-equivalences
2021
open import foundation.transport-along-identifications
2122
open import foundation.universe-levels
2223
@@ -150,3 +151,14 @@ abstract
150151
{ y = raise-ℝ l one-ℝ}
151152
( sim-raise-ℝ l one-ℝ)))
152153
```
154+
155+
### A real number is invertible iff it is nonzero
156+
157+
```agda
158+
is-invertible-iff-is-nonzero-ℝ :
159+
{l : Level} (x : ℝ l) →
160+
(is-invertible-element-Commutative-Ring (commutative-ring-ℝ l) x) ↔
161+
(is-nonzero-ℝ x)
162+
is-invertible-iff-is-nonzero-ℝ x =
163+
( is-nonzero-is-invertible-ℝ x , is-invertible-is-nonzero-ℝ x)
164+
```

src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ open import foundation.disjunction
2727
open import foundation.empty-types
2828
open import foundation.existential-quantification
2929
open import foundation.identity-types
30+
open import foundation.logical-equivalences
3031
open import foundation.propositional-truncations
3132
open import foundation.propositions
3233
open import foundation.subtypes

src/ring-theory/invertible-elements-rings.lagda.md

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -328,27 +328,28 @@ module _
328328
{l : Level} (R : Ring l)
329329
where
330330
331-
is-invertible-element-neg-Ring :
332-
(x : type-Ring R) →
333-
is-invertible-element-Ring R x →
334-
is-invertible-element-Ring R (neg-Ring R x)
335-
is-invertible-element-neg-Ring x =
336-
map-Σ _
337-
( neg-Ring R)
338-
( λ y →
339-
map-product
340-
( mul-neg-Ring R x y ∙_)
341-
( mul-neg-Ring R y x ∙_))
342-
343-
is-invertible-element-neg-Ring' :
344-
(x : type-Ring R) →
345-
is-invertible-element-Ring R (neg-Ring R x) →
346-
is-invertible-element-Ring R x
347-
is-invertible-element-neg-Ring' x H =
348-
tr
349-
( is-invertible-element-Ring R)
350-
( neg-neg-Ring R x)
351-
( is-invertible-element-neg-Ring (neg-Ring R x) H)
331+
abstract
332+
is-invertible-element-neg-Ring :
333+
(x : type-Ring R) →
334+
is-invertible-element-Ring R x →
335+
is-invertible-element-Ring R (neg-Ring R x)
336+
is-invertible-element-neg-Ring x =
337+
map-Σ _
338+
( neg-Ring R)
339+
( λ y →
340+
map-product
341+
( mul-neg-Ring R x y ∙_)
342+
( mul-neg-Ring R y x ∙_))
343+
344+
is-invertible-element-neg-Ring' :
345+
(x : type-Ring R) →
346+
is-invertible-element-Ring R (neg-Ring R x) →
347+
is-invertible-element-Ring R x
348+
is-invertible-element-neg-Ring' x H =
349+
tr
350+
( is-invertible-element-Ring R)
351+
( neg-neg-Ring R x)
352+
( is-invertible-element-neg-Ring (neg-Ring R x) H)
352353
```
353354

354355
### The inverse of an invertible element is invertible

0 commit comments

Comments
 (0)