Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
232 commits
Select commit Hold shift + click to select a range
54da061
Reorganize signed arithmetic on rational numbers
lowasser Oct 10, 2025
124c9f6
make pre-commit
lowasser Oct 10, 2025
7603bbe
Merge branch 'master' into shake-out-signed-rational
lowasser Oct 11, 2025
80ed53f
Merge branch 'master' into shake-out-signed-rational
lowasser Oct 12, 2025
9dc460a
Update
lowasser Oct 12, 2025
fac3bc7
Merge remote-tracking branch 'origin/shake-out-signed-rational' into …
lowasser Oct 12, 2025
0f28ea3
Merge branch 'master' into shake-out-signed-rational
lowasser Oct 12, 2025
e7c6423
Progress
lowasser Oct 14, 2025
79e3441
Merge branch 'master' into shake-out-signed-rational
lowasser Oct 14, 2025
9963c47
Updates
lowasser Oct 14, 2025
617ae3a
Merge remote-tracking branch 'origin/shake-out-signed-rational' into …
lowasser Oct 14, 2025
41e9741
Merge branch 'master' into shake-out-signed-rational
lowasser Oct 14, 2025
d9d056a
Merge branch 'shake-out-signed-rational' into powers-q
lowasser Oct 14, 2025
817f878
More properties
lowasser Oct 14, 2025
984d8d4
Back out integer powers
lowasser Oct 14, 2025
a69f766
Fixes
lowasser Oct 15, 2025
a3a1866
Merge branch 'master' into shake-out-signed-rational
lowasser Oct 15, 2025
ea3fa12
Fix merge
lowasser Oct 15, 2025
5b44912
Merge branch 'shake-out-signed-rational' into powers-q
lowasser Oct 15, 2025
c7176d6
make pre-commit
lowasser Oct 15, 2025
e8b468a
Merge branch 'master' into shake-out-signed-rational
lowasser Oct 15, 2025
df308e2
Fix merge
lowasser Oct 15, 2025
607eba5
Apply suggestions from code review
lowasser Oct 17, 2025
daa9fc0
Respond to review comments
lowasser Oct 17, 2025
a172df5
Merge branch 'master' into shake-out-signed-rational
lowasser Oct 17, 2025
fbfc0e0
Merge branch 'shake-out-signed-rational' into powers-q
lowasser Oct 17, 2025
e3af1cf
Merge branch 'shake-out-signed-rational' into powers-q
lowasser Oct 17, 2025
0905e0f
Progress
lowasser Oct 17, 2025
0651841
Clarify concept disambiguation
lowasser Oct 17, 2025
d3ffdcf
Merge branch 'powers-q' into powers-all-q
lowasser Oct 17, 2025
e0a24b8
Progress
lowasser Oct 17, 2025
c5b3be8
Further clarify doc
lowasser Oct 17, 2025
139c496
Merge branch 'powers-q' into powers-all-q
lowasser Oct 17, 2025
a8c35cd
Progress
lowasser Oct 17, 2025
cf5019c
Merge branch 'master' into powers-q
lowasser Oct 17, 2025
3793aca
Merge branch 'powers-q' into powers-all-q
lowasser Oct 17, 2025
906c3fb
Progress
lowasser Oct 17, 2025
0bf288f
Merge branch 'master' into powers-all-q
lowasser Oct 17, 2025
92b42a5
Correct superscripts
lowasser Oct 17, 2025
978b504
Progress
lowasser Oct 17, 2025
930459d
Merge branch 'powers-all-q' into geo-seq-ring
lowasser Oct 17, 2025
e332e19
Sums of geometric series for rational numbers
lowasser Oct 17, 2025
c33f1fb
Progress
lowasser Oct 20, 2025
0c8244b
Merge branch 'master' into geo-seq-ring
lowasser Nov 5, 2025
3c95dda
Fix build
lowasser Nov 5, 2025
02238ca
Fix link
lowasser Nov 5, 2025
178803c
Merge branch 'master' into geo-seq-real
lowasser Nov 6, 2025
764f62e
If |q|<1 , q^n approaches 0
lowasser Nov 6, 2025
e80b404
Merge branch 'master' into geo-seq-ring
lowasser Nov 6, 2025
7d6ca7d
Merge remote-tracking branch 'origin/geo-seq-ring' into geo-seq-ring
lowasser Nov 6, 2025
3b396c3
Merge branch 'geo-seq-ring' into geo-seq-rat
lowasser Nov 6, 2025
3c8f1ad
The sum of geometric series of rational numbers
lowasser Nov 6, 2025
2b7d4a2
Define real powers
lowasser Nov 6, 2025
d2bfcb7
Powers of real numbers
lowasser Nov 7, 2025
3754e35
Merge branch 'master' into power-real
lowasser Nov 7, 2025
a0e010c
Apply suggestions from code review
lowasser Nov 7, 2025
9c28f09
Merge remote-tracking branch 'origin/geo-seq-ring' into geo-seq-ring
lowasser Nov 7, 2025
dc3c1b3
Apply suggestions from code review
lowasser Nov 7, 2025
ad32a6f
Merge remote-tracking branch 'origin/geo-seq-ring' into geo-seq-ring
lowasser Nov 7, 2025
b61e819
Update
lowasser Nov 7, 2025
af95bc8
Merge branch 'master' into geo-seq-ring
lowasser Nov 7, 2025
66ebb46
Fixes
lowasser Nov 7, 2025
6c1ede5
Merge remote-tracking branch 'origin/geo-seq-ring' into geo-seq-ring
lowasser Nov 7, 2025
d91ca39
Merge branch 'geo-seq-ring' into geo-seq-rat
lowasser Nov 7, 2025
dd29175
Merge branch 'master' into geo-seq-rat
lowasser Nov 7, 2025
6969f98
Merge
lowasser Nov 7, 2025
a1a0871
Merge branch 'master' into mul-inv-complex
lowasser Nov 7, 2025
966d80d
Progress
lowasser Nov 7, 2025
0befcc5
Merge branch 'geo-seq-rat' into power-real
lowasser Nov 7, 2025
2882532
Progress
lowasser Nov 7, 2025
380382b
Progress
lowasser Nov 7, 2025
b5a27af
Progress
lowasser Nov 7, 2025
5545c34
Progress
lowasser Nov 7, 2025
007d587
Progress
lowasser Nov 7, 2025
6241f8c
Progress
lowasser Nov 8, 2025
13ddd47
Mark more things abstract opaque
lowasser Nov 8, 2025
04ccb85
Fix indent
lowasser Nov 8, 2025
1d65b0a
Fix title
lowasser Nov 8, 2025
84dec2a
Fix
lowasser Nov 8, 2025
315b668
Apply suggestions from code review
lowasser Nov 8, 2025
ed77ccd
Apply suggestions from code review
lowasser Nov 8, 2025
a6f215d
Merge branch 'cleanup-reals' into power-small-real
lowasser Nov 8, 2025
cbda75f
Geometric series in the reals
lowasser Nov 8, 2025
866db9d
Merge branch 'master' into power-real
lowasser Nov 8, 2025
eac6aa2
Fix link
lowasser Nov 8, 2025
6fd2d52
Correct spelling
lowasser Nov 8, 2025
7d10f9c
Update src/real-numbers/powers-real-numbers.lagda.md
fredrik-bakke Nov 8, 2025
43ad559
Fix
lowasser Nov 8, 2025
1f00414
Merge remote-tracking branch 'origin/power-real' into power-small-real
lowasser Nov 8, 2025
343a4ac
Merge branch 'master' into power-small-real
lowasser Nov 8, 2025
76b2d96
Fix
lowasser Nov 8, 2025
37b06ff
Merge branch 'master' into geo-seq-rat
fredrik-bakke Nov 8, 2025
76bec78
Progress
lowasser Nov 8, 2025
2be3628
Merge branch 'geo-seq-rat' into power-small-real
lowasser Nov 8, 2025
e609a5c
Merge branch 'master' into cleanup-reals
lowasser Nov 8, 2025
e9a1277
Merge branch 'cleanup-reals' into power-small-real
lowasser Nov 8, 2025
423fdcc
Merge branch 'power-small-real' into derivative-v2
lowasser Nov 8, 2025
507c7fa
Progress
lowasser Nov 8, 2025
41992ba
Pull changes
lowasser Nov 8, 2025
80ae32b
Progress
lowasser Nov 8, 2025
b0404c0
Progress
lowasser Nov 8, 2025
8a4a028
Merge branch 'cleanup-reals' into apartness-metric
lowasser Nov 8, 2025
4a86b5d
Merge branch 'power-small-real' into apartness-metric
lowasser Nov 8, 2025
53d3a16
Progress
lowasser Nov 8, 2025
139c5ac
Update src/real-numbers/dedekind-real-numbers.lagda.md
lowasser Nov 8, 2025
d9aeb7f
Apply suggestions from code review
lowasser Nov 8, 2025
defa213
Update src/real-numbers/strict-inequalities-addition-real-numbers.lag…
lowasser Nov 8, 2025
fa31c52
Update src/real-numbers/strict-inequalities-addition-real-numbers.lag…
lowasser Nov 8, 2025
45757e8
Update src/real-numbers/saturation-inequality-nonnegative-real-number…
lowasser Nov 8, 2025
70cef9b
Rename files
lowasser Nov 8, 2025
542ccde
Merge branch 'cleanup-reals' into power-small-real
lowasser Nov 8, 2025
293343c
Merge branch 'power-small-real' into apartness-metric
lowasser Nov 8, 2025
a85cdcb
Fix
lowasser Nov 8, 2025
1d5f0a2
Fix
lowasser Nov 8, 2025
399e3c3
Fix build
lowasser Nov 8, 2025
0d47a8a
Progress
lowasser Nov 8, 2025
89c04b3
Merge branch 'apartness-metric' into cluster-point-metric
lowasser Nov 8, 2025
7c13bf5
Merge branch 'proper-closed-intervals' into cluster-point-metric
lowasser Nov 8, 2025
6a0ce50
Every point in a proper closed interval is an accumulation point
lowasser Nov 9, 2025
3ed6bf1
Sequential accumulation points
lowasser Nov 9, 2025
74b1601
Prove equivalence between sequential and approximation versions
lowasser Nov 9, 2025
2bda7c6
Prove equivalence between sequential and approximation versions
lowasser Nov 9, 2025
719aff3
Fix link
lowasser Nov 9, 2025
8569df8
chore: optimize imports `real-numbers`
fredrik-bakke Nov 9, 2025
f11b6e2
fix
fredrik-bakke Nov 9, 2025
2c0bdbc
chore: optimize imports rational numbers
fredrik-bakke Nov 9, 2025
6f84e68
Merge branch 'master' into cleanup-reals
fredrik-bakke Nov 9, 2025
19429e5
Merge remote-tracking branch 'origin/cleanup-reals' into power-small-…
lowasser Nov 9, 2025
908914f
Fixes
lowasser Nov 9, 2025
39c6414
Merge branch 'master' into power-small-real
lowasser Nov 9, 2025
7542dd2
Fix build
lowasser Nov 9, 2025
d22a00b
Merge branch 'power-small-real' into apartness-metric
lowasser Nov 9, 2025
247204c
Merge branch 'apartness-metric' into cluster-point-metric
lowasser Nov 9, 2025
850d8e0
Merge branch 'cluster-point-metric' into mul-inv-complex
lowasser Nov 9, 2025
fc7be89
Multiplicative inverses of nonzero complex numbers
lowasser Nov 9, 2025
89adb08
Magnitudes multiply
lowasser Nov 10, 2025
71726c6
Progress
lowasser Nov 10, 2025
1b16862
Merge branch 'master' into power-small-real
lowasser Nov 10, 2025
0bb5730
Update src/commutative-algebra/geometric-sequences-commutative-rings.…
lowasser Nov 10, 2025
62bf2b6
Respond to review comment
lowasser Nov 10, 2025
8367ef1
Merge remote-tracking branch 'origin/power-small-real' into power-sma…
lowasser Nov 10, 2025
855c5bb
Fix arithmetic op names
lowasser Nov 10, 2025
51dbac7
Merge branch 'power-small-real' into apartness-metric
lowasser Nov 10, 2025
9309668
Apply suggestions from code review
lowasser Nov 10, 2025
d1447a8
Respond to comments
lowasser Nov 10, 2025
fb3dec5
plural `preserves-limits`
fredrik-bakke Nov 10, 2025
b016840
Vector spaces
lowasser Nov 11, 2025
3eaaa46
The large ring of complex numbers
lowasser Nov 11, 2025
53c47f3
Large ring of complex numbers
lowasser Nov 11, 2025
b314743
Merge branch 'power-small-real' into apartness-metric
lowasser Nov 11, 2025
ace1e87
Merge branch 'master' into apartness-metric
lowasser Nov 11, 2025
6b6689a
Correct merge
lowasser Nov 11, 2025
d1f0d74
Merge branch 'master' into complex-ring
lowasser Nov 11, 2025
99a530b
Fix
lowasser Nov 11, 2025
1d02a41
Progress
lowasser Nov 11, 2025
b9dc6da
Delete small ring of complex numbers from separate file
lowasser Nov 11, 2025
cac562e
Fix merge
lowasser Nov 11, 2025
ed80b13
Fix table
lowasser Nov 11, 2025
06949cd
Merge remote-tracking branch 'origin/power-small-real' into is-nonzer…
lowasser Nov 11, 2025
874df63
Merge branch 'master' into is-nonzero-has-mul-inv-complex
lowasser Nov 11, 2025
15cab26
make pre-commit
lowasser Nov 11, 2025
46e57a4
Progress
lowasser Nov 11, 2025
d46c059
Progress
lowasser Nov 11, 2025
453322e
Revert accident
lowasser Nov 11, 2025
b8e2f5f
Progress
lowasser Nov 11, 2025
145f654
Merge branch 'complex-ring' into is-nonzero-has-mul-inv-complex
lowasser Nov 11, 2025
de80356
Merge
lowasser Nov 11, 2025
8cc7cd7
Merge branch 'vector-spaces' into is-nonzero-has-mul-inv-complex
lowasser Nov 11, 2025
83be790
Progress
lowasser Nov 11, 2025
23e4eab
Fix lefts and rights
lowasser Nov 11, 2025
89ecd1c
Merge branch 'mul-inv-complex' into is-nonzero-has-mul-inv-complex
lowasser Nov 11, 2025
4114c71
The local ring of complex numbers
lowasser Nov 11, 2025
ddf1a70
Complex vector spaces
lowasser Nov 11, 2025
16e5f5c
Progress
lowasser Nov 11, 2025
edc0b39
Merge branch 'mul-inv-complex' into vector-spaces
lowasser Nov 11, 2025
3a1716c
Merge branch 'apartness-metric' into cluster-point-metric
lowasser Nov 11, 2025
e1a2523
Merge branch 'cluster-point-metric' into vector-spaces
lowasser Nov 11, 2025
0ae46e4
Merge branch 'vector-spaces' into is-nonzero-has-mul-inv-complex
lowasser Nov 11, 2025
71b83ec
Add properties for complex vector spaces
lowasser Nov 11, 2025
8ac326c
Apply suggestions from code review
lowasser Nov 11, 2025
68dbbeb
Merge branch 'apartness-metric' into cluster-point-metric
lowasser Nov 11, 2025
c9c052d
Merge branch 'cluster-point-metric' into mul-inv-complex
lowasser Nov 11, 2025
98a567d
Fix
lowasser Nov 11, 2025
6875f83
Merge branch 'master' into apartness-metric
fredrik-bakke Nov 11, 2025
104ce21
Merge branch 'apartness-metric' into cluster-point-metric
lowasser Nov 12, 2025
b8d27e2
Merge branch 'master' into cluster-point-metric
lowasser Nov 12, 2025
cea1591
Merge branch 'cluster-point-metric' into vector-spaces
lowasser Nov 12, 2025
4ac0fbf
Merge branch 'cluster-point-metric' into mul-inv-complex
lowasser Nov 12, 2025
53e7aeb
make pre-commit
lowasser Nov 12, 2025
e32bd41
make pre-commit
lowasser Nov 12, 2025
7300f31
Merge branch 'master' into cluster-point-metric
lowasser Nov 13, 2025
c90223c
Merge branch 'master' into cluster-point-metric
lowasser Nov 13, 2025
a1a6a8c
Update src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md
lowasser Nov 13, 2025
1bcb06a
Update src/metric-spaces/accumulation-points-subsets-located-metric-s…
lowasser Nov 13, 2025
a9bacdd
Update src/real-numbers/binary-maximum-real-numbers.lagda.md
lowasser Nov 13, 2025
f5e8fba
Progress
lowasser Nov 13, 2025
eb7688e
Merge remote-tracking branch 'origin/cluster-point-metric' into clust…
lowasser Nov 13, 2025
510ac59
Merge branch 'master' into cluster-point-metric
lowasser Nov 13, 2025
08bb7e3
Fixes
lowasser Nov 13, 2025
db68b9d
Simplify
lowasser Nov 13, 2025
ec3033d
Merge branch 'cluster-point-metric' into mul-inv-complex
lowasser Nov 13, 2025
10c1f9c
Merge branch 'mul-inv-complex' into is-nonzero-has-mul-inv-complex
lowasser Nov 13, 2025
9a1d3a2
Merge branch 'cluster-point-metric' into vector-spaces
lowasser Nov 13, 2025
0ec089c
Merge branch 'mul-inv-complex' into vector-spaces
lowasser Nov 13, 2025
4a1d1c9
Fix braces
lowasser Nov 15, 2025
41d759f
Merge branch 'mul-inv-complex' into is-nonzero-has-mul-inv-complex
lowasser Nov 15, 2025
a15f079
Merge branch 'mul-inv-complex' into vector-spaces
lowasser Nov 15, 2025
ecfd72d
Update src/metric-spaces/accumulation-points-subsets-located-metric-s…
lowasser Nov 15, 2025
bf8f5c6
Merge remote-tracking branch 'origin/cluster-point-metric'
lowasser Nov 15, 2025
ff1dcee
Merge branch 'master' into mul-inv-complex
lowasser Nov 15, 2025
f0e48e4
Merge branch 'mul-inv-complex' into vector-spaces
lowasser Nov 15, 2025
5a35c99
Merge branch 'mul-inv-complex' into is-nonzero-has-mul-inv-complex
lowasser Nov 15, 2025
f0219d3
Merge branch 'vector-spaces' into is-nonzero-has-mul-inv-complex
lowasser Nov 15, 2025
1c59242
Fix imports
lowasser Nov 15, 2025
77b8389
Merge branch 'mul-inv-complex' into is-nonzero-has-mul-inv-complex
lowasser Nov 15, 2025
f09fd5f
The reals are a vector space over themselves
lowasser Nov 15, 2025
5ef21f2
Fix title in vector-spaces
lowasser Nov 15, 2025
de71c71
Add more cross links
lowasser Nov 16, 2025
ef5fb9d
Update src/complex-numbers/apartness-complex-numbers.lagda.md
lowasser Nov 16, 2025
f734c77
Update src/complex-numbers/magnitude-complex-numbers.lagda.md
lowasser Nov 16, 2025
b069ea8
Update src/complex-numbers/magnitude-complex-numbers.lagda.md
lowasser Nov 16, 2025
e090719
Update src/complex-numbers/magnitude-complex-numbers.lagda.md
lowasser Nov 16, 2025
6783b3d
Apply suggestions from code review
lowasser Nov 16, 2025
c02c593
Respond to review comments
lowasser Nov 16, 2025
7cb97fd
Merge branch 'master' into mul-inv-complex
lowasser Nov 16, 2025
b1f22ea
Merge branch 'mul-inv-complex' into vector-spaces
lowasser Nov 16, 2025
228638c
Merge remote-tracking branch 'origin/mul-inv-complex' into is-nonzero…
lowasser Nov 16, 2025
bd153fe
Merge branch 'master' into is-nonzero-has-mul-inv-complex
lowasser Nov 16, 2025
6cec6d0
make pre-commit
lowasser Nov 16, 2025
e053de1
Merge branch 'vector-spaces' into is-nonzero-has-mul-inv-complex
lowasser Nov 16, 2025
a4cec6e
Merge properly
lowasser Nov 16, 2025
5edfafd
make pre-commit
lowasser Nov 16, 2025
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
20 changes: 20 additions & 0 deletions src/commutative-algebra/local-commutative-rings.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,24 @@ module _
is-local-commutative-ring-Local-Commutative-Ring :
is-local-Commutative-Ring commutative-ring-Local-Commutative-Ring
is-local-commutative-ring-Local-Commutative-Ring = pr2 A

zero-Local-Commutative-Ring : type-Local-Commutative-Ring
zero-Local-Commutative-Ring = zero-Ring ring-Local-Commutative-Ring

one-Local-Commutative-Ring : type-Local-Commutative-Ring
one-Local-Commutative-Ring = one-Ring ring-Local-Commutative-Ring

add-Local-Commutative-Ring :
type-Local-Commutative-Ring → type-Local-Commutative-Ring →
type-Local-Commutative-Ring
add-Local-Commutative-Ring = add-Ring ring-Local-Commutative-Ring

mul-Local-Commutative-Ring :
type-Local-Commutative-Ring → type-Local-Commutative-Ring →
type-Local-Commutative-Ring
mul-Local-Commutative-Ring = mul-Ring ring-Local-Commutative-Ring

neg-Local-Commutative-Ring :
type-Local-Commutative-Ring → type-Local-Commutative-Ring
neg-Local-Commutative-Ring = neg-Ring ring-Local-Commutative-Ring
```
2 changes: 2 additions & 0 deletions src/complex-numbers.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
module complex-numbers where

open import complex-numbers.addition-complex-numbers public
open import complex-numbers.addition-nonzero-complex-numbers public
open import complex-numbers.apartness-complex-numbers public
open import complex-numbers.complex-numbers public
open import complex-numbers.conjugation-complex-numbers public
open import complex-numbers.eisenstein-integers public
open import complex-numbers.gaussian-integers public
open import complex-numbers.large-additive-group-of-complex-numbers public
open import complex-numbers.large-ring-of-complex-numbers public
open import complex-numbers.local-ring-of-complex-numbers public
open import complex-numbers.magnitude-complex-numbers public
open import complex-numbers.multiplication-complex-numbers public
open import complex-numbers.multiplicative-inverses-nonzero-complex-numbers public
Expand Down
53 changes: 53 additions & 0 deletions src/complex-numbers/addition-nonzero-complex-numbers.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Addition of nonzero complex numbers

```agda
module complex-numbers.addition-nonzero-complex-numbers where
```

<details><summary>Imports</summary>

```agda
open import complex-numbers.addition-complex-numbers
open import complex-numbers.complex-numbers
open import complex-numbers.nonzero-complex-numbers

open import foundation.disjunction
open import foundation.functoriality-disjunction
open import foundation.universe-levels

open import real-numbers.addition-nonzero-real-numbers
open import real-numbers.nonzero-real-numbers
```

</details>

## Idea

This file describes properties of
[addition](complex-numbers.addition-complex-numbers.md) of
[nonzero](complex-numbers.nonzero-complex-numbers.md)
[complex numbers](complex-numbers.complex-numbers.md).

## Properties

### If the sum of two complex numbers is nonzero, one of them is nonzero

```agda
abstract
is-nonzero-either-is-nonzero-add-ℂ :
{l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → is-nonzero-ℂ (z +ℂ w) →
disjunction-type (is-nonzero-ℂ z) (is-nonzero-ℂ w)
is-nonzero-either-is-nonzero-add-ℂ z@(a +iℂ b) w@(c +iℂ d) =
elim-disjunction
( is-nonzero-prop-ℂ z ∨ is-nonzero-prop-ℂ w)
( λ a+c≠0 →
map-disjunction
( inl-disjunction)
( inl-disjunction)
( is-nonzero-either-is-nonzero-add-ℝ a c a+c≠0))
( λ b+d≠0 →
map-disjunction
( inr-disjunction)
( inr-disjunction)
( is-nonzero-either-is-nonzero-add-ℝ b d b+d≠0))
```
50 changes: 50 additions & 0 deletions src/complex-numbers/local-ring-of-complex-numbers.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# The local ring of complex numbers

```agda
module complex-numbers.local-ring-of-complex-numbers where
```

<details><summary>Imports</summary>

```agda
open import commutative-algebra.local-commutative-rings

open import complex-numbers.addition-complex-numbers
open import complex-numbers.addition-nonzero-complex-numbers
open import complex-numbers.large-ring-of-complex-numbers
open import complex-numbers.multiplicative-inverses-nonzero-complex-numbers
open import complex-numbers.nonzero-complex-numbers

open import foundation.dependent-pair-types
open import foundation.functoriality-disjunction
open import foundation.universe-levels
```

</details>

## Idea

The
[commutative ring of complex numbers](complex-numbers.large-ring-of-complex-numbers.md)
is [local](commutative-algebra.local-commutative-rings.md).

## Definition

```agda
is-local-commutative-ring-ℂ :
(l : Level) → is-local-Commutative-Ring (commutative-ring-ℂ l)
is-local-commutative-ring-ℂ l z w is-invertible-z+w =
map-disjunction
( is-invertible-is-nonzero-ℂ z)
( is-invertible-is-nonzero-ℂ w)
( is-nonzero-either-is-nonzero-add-ℂ
( z)
( w)
( is-nonzero-is-invertible-ℂ
( z +ℂ w)
( is-invertible-z+w)))

local-commutative-ring-ℂ : (l : Level) → Local-Commutative-Ring (lsuc l)
local-commutative-ring-ℂ l =
( commutative-ring-ℂ l , is-local-commutative-ring-ℂ l)
```
68 changes: 68 additions & 0 deletions src/complex-numbers/magnitude-complex-numbers.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,14 @@ module complex-numbers.magnitude-complex-numbers where
open import complex-numbers.complex-numbers
open import complex-numbers.conjugation-complex-numbers
open import complex-numbers.multiplication-complex-numbers
open import complex-numbers.similarity-complex-numbers

open import foundation.action-on-identifications-functions
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.universe-levels

open import real-numbers.absolute-value-real-numbers
open import real-numbers.addition-nonnegative-real-numbers
open import real-numbers.addition-real-numbers
open import real-numbers.dedekind-real-numbers
Expand All @@ -25,6 +28,7 @@ open import real-numbers.multiplication-nonnegative-real-numbers
open import real-numbers.multiplication-real-numbers
open import real-numbers.negation-real-numbers
open import real-numbers.nonnegative-real-numbers
open import real-numbers.positive-real-numbers
open import real-numbers.raising-universe-levels-real-numbers
open import real-numbers.rational-real-numbers
open import real-numbers.similarity-real-numbers
Expand Down Expand Up @@ -225,3 +229,67 @@ abstract
= magnitude-ℂ z *ℝ magnitude-ℂ w
by ap real-ℝ⁰⁺ (distributive-sqrt-mul-ℝ⁰⁺ _ _)
```

### The magnitude of a real number as a complex number is its absolute value

```agda
abstract
magnitude-complex-ℝ :
{l : Level} (x : ℝ l) → magnitude-ℂ (complex-ℝ x) = abs-ℝ x
magnitude-complex-ℝ {l} x =
equational-reasoning
real-sqrt-ℝ⁰⁺
( nonnegative-square-ℝ x +ℝ⁰⁺ nonnegative-square-ℝ (raise-ℝ l zero-ℝ))
real-sqrt-ℝ⁰⁺
( nonnegative-square-ℝ x +ℝ⁰⁺ nonnegative-square-ℝ zero-ℝ)
by
ap
( real-sqrt-ℝ⁰⁺)
( eq-ℝ⁰⁺ _ _
( eq-sim-ℝ
( preserves-sim-left-add-ℝ _ _ _
( preserves-sim-square-ℝ
( symmetric-sim-ℝ (sim-raise-ℝ l zero-ℝ))))))
= real-sqrt-ℝ⁰⁺ (nonnegative-square-ℝ x +ℝ⁰⁺ zero-ℝ⁰⁺)
by ap real-sqrt-ℝ⁰⁺ (eq-ℝ⁰⁺ _ _ (ap-add-ℝ refl square-zero-ℝ))
= real-sqrt-ℝ⁰⁺ (nonnegative-square-ℝ x)
by ap real-sqrt-ℝ⁰⁺ (eq-ℝ⁰⁺ _ _ (right-unit-law-add-ℝ _))
= abs-ℝ x
by inv (eq-abs-sqrt-square-ℝ x)
```

### Similar complex numbers have similar magnitudes

```agda
abstract
preserves-sim-squared-magnitude-ℂ :
{l1 l2 : Level} {z : ℂ l1} {w : ℂ l2} →
sim-ℂ z w → sim-ℝ (squared-magnitude-ℂ z) (squared-magnitude-ℂ w)
preserves-sim-squared-magnitude-ℂ (a~c , b~d) =
preserves-sim-add-ℝ
( preserves-sim-square-ℝ a~c)
( preserves-sim-square-ℝ b~d)

preserves-sim-magnitude-ℂ :
{l1 l2 : Level} {z : ℂ l1} {w : ℂ l2} →
sim-ℂ z w → sim-ℝ (magnitude-ℂ z) (magnitude-ℂ w)
preserves-sim-magnitude-ℂ z~w =
preserves-sim-sqrt-ℝ⁰⁺ _ _ (preserves-sim-squared-magnitude-ℂ z~w)
```

### The magnitude of `one-ℂ` is `one-ℝ`

```agda
abstract
magnitude-one-ℂ : magnitude-ℂ one-ℂ = one-ℝ
magnitude-one-ℂ =
equational-reasoning
magnitude-ℂ one-ℂ
= magnitude-ℂ (complex-ℝ one-ℝ)
by ap magnitude-ℂ (inv eq-complex-one-ℝ)
= abs-ℝ one-ℝ
by magnitude-complex-ℝ one-ℝ
= one-ℝ
by abs-real-ℝ⁺ one-ℝ⁺
```
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,34 @@ module complex-numbers.multiplicative-inverses-nonzero-complex-numbers where
<details><summary>Imports</summary>

```agda
open import commutative-algebra.invertible-elements-commutative-rings

open import complex-numbers.complex-numbers
open import complex-numbers.conjugation-complex-numbers
open import complex-numbers.large-ring-of-complex-numbers
open import complex-numbers.magnitude-complex-numbers
open import complex-numbers.multiplication-complex-numbers
open import complex-numbers.nonzero-complex-numbers
open import complex-numbers.raising-universe-levels-complex-numbers
open import complex-numbers.similarity-complex-numbers

open import foundation.dependent-pair-types
open import foundation.disjunction
open import foundation.empty-types
open import foundation.function-types
open import foundation.identity-types
open import foundation.transport-along-identifications
open import foundation.universe-levels

open import real-numbers.multiplication-nonzero-real-numbers
open import real-numbers.multiplication-real-numbers
open import real-numbers.multiplicative-inverses-positive-real-numbers
open import real-numbers.nonnegative-real-numbers
open import real-numbers.nonzero-real-numbers
open import real-numbers.positive-and-negative-real-numbers
open import real-numbers.positive-real-numbers
open import real-numbers.rational-real-numbers
open import real-numbers.similarity-real-numbers
```

</details>
Expand Down Expand Up @@ -86,3 +99,99 @@ abstract
( commutative-mul-ℂ _ _)
( right-inverse-law-mul-nonzero-ℂ z)
```

### If a complex number has a multiplicative inverse, it is nonzero

```agda
abstract
is-nonzero-has-right-inverse-mul-ℂ :
{l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → sim-ℂ (z *ℂ w) one-ℂ →
is-nonzero-ℂ z
is-nonzero-has-right-inverse-mul-ℂ z w zw=1 =
is-nonzero-is-positive-magnitude-ℂ
( z)
( elim-disjunction
( is-positive-prop-ℝ (magnitude-ℂ z))
( λ |z|<0 →
ex-falso
( is-not-negative-and-nonnegative-ℝ
( |z|<0 , is-nonnegative-real-ℝ⁰⁺ (nonnegative-magnitude-ℂ z))))
( id)
( pr1
( is-nonzero-factors-is-nonzero-mul-ℝ
( (magnitude-ℂ z))
( (magnitude-ℂ w))
( is-nonzero-sim-ℝ
( symmetric-sim-ℝ
( similarity-reasoning-ℝ
(magnitude-ℂ z) *ℝ (magnitude-ℂ w)
~ℝ magnitude-ℂ (z *ℂ w)
by sim-eq-ℝ (inv (distributive-magnitude-mul-ℂ z w))
~ℝ magnitude-ℂ one-ℂ
by preserves-sim-magnitude-ℂ zw=1
~ℝ one-ℝ
by sim-eq-ℝ magnitude-one-ℂ))
( is-nonzero-is-positive-ℝ is-positive-one-ℝ)))))

is-nonzero-has-left-inverse-mul-ℂ :
{l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → sim-ℂ (z *ℂ w) one-ℂ →
is-nonzero-ℂ w
is-nonzero-has-left-inverse-mul-ℂ z w zw=1 =
is-nonzero-has-right-inverse-mul-ℂ
( w)
( z)
( tr (λ x → sim-ℂ x one-ℂ) (commutative-mul-ℂ z w) zw=1)
```

### The multiplicative inverse of a nonzero complex number is nonzero

```agda
abstract
is-nonzero-complex-inv-nonzero-ℂ :
{l : Level} (z : nonzero-ℂ l) → is-nonzero-ℂ (complex-inv-nonzero-ℂ z)
is-nonzero-complex-inv-nonzero-ℂ z =
is-nonzero-has-left-inverse-mul-ℂ
( _)
( _)
( right-inverse-law-mul-nonzero-ℂ z)

inv-nonzero-ℂ : {l : Level} → nonzero-ℂ l → nonzero-ℂ l
inv-nonzero-ℂ z = (complex-inv-nonzero-ℂ z , is-nonzero-complex-inv-nonzero-ℂ z)
```

### A complex number is invertible if and only if it is nonzero

```agda
abstract
is-nonzero-is-invertible-ℂ :
{l : Level} (z : ℂ l) →
is-invertible-element-Commutative-Ring (commutative-ring-ℂ l) z →
is-nonzero-ℂ z
is-nonzero-is-invertible-ℂ z (w , zw=1 , _) =
is-nonzero-has-right-inverse-mul-ℂ
( z)
( w)
( transitive-sim-ℂ _ _ _
( symmetric-sim-ℂ (sim-raise-ℂ _ one-ℂ))
( sim-eq-ℂ zw=1))

is-invertible-is-nonzero-ℂ :
{l : Level} (z : ℂ l) → is-nonzero-ℂ z →
is-invertible-element-Commutative-Ring (commutative-ring-ℂ l) z
is-invertible-is-nonzero-ℂ z z≠0 =
( complex-inv-nonzero-ℂ (z , z≠0) ,
eq-sim-ℂ
( similarity-reasoning-ℂ
z *ℂ complex-inv-nonzero-ℂ (z , z≠0)
~ℂ one-ℂ
by right-inverse-law-mul-nonzero-ℂ (z , z≠0)
~ℂ raise-ℂ _ one-ℂ
by sim-raise-ℂ _ one-ℂ) ,
eq-sim-ℂ
( similarity-reasoning-ℂ
complex-inv-nonzero-ℂ (z , z≠0) *ℂ z
~ℂ one-ℂ
by left-inverse-law-mul-nonzero-ℂ (z , z≠0)
~ℂ raise-ℂ _ one-ℂ
by sim-raise-ℂ _ one-ℂ))
```
Loading