Skip to content

Commit 67c51a8

Browse files
author
Franziskus Wiesnet
committed
Comments added
1 parent fdc24bb commit 67c51a8

File tree

3 files changed

+62
-235
lines changed

3 files changed

+62
-235
lines changed

Cubical/Algebra/Determinat/adjugate.agda

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,11 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
3939
open Determinat ℓ P'
4040
open Coefficient (P')
4141

42+
-- Scalar multiplication
4243
_∘_ : {n m : ℕ} R FinMatrix R n m FinMatrix R n m
4344
(a ∘ M) i j = a · (M i j)
4445

45-
deltaProp : {n : ℕ} (k l : Fin n) toℕ k <' toℕ l δ k l ≡ 0r
46-
deltaProp {suc n} zero (suc l) (s≤s le) = refl
47-
deltaProp {suc n} (suc k) (suc l) (s≤s le) = deltaProp {n} k l le
48-
49-
deltaPropSym : {n : ℕ} (k l : Fin n) toℕ l <' toℕ k δ k l ≡ 0r
50-
deltaPropSym {suc n} (suc k) (zero) (s≤s le) = refl
51-
deltaPropSym {suc n} (suc k) (suc l) (s≤s le) = deltaPropSym {n} k l le
52-
46+
-- Properties of ==
5347
==Refl : {n : ℕ} (k : Fin n) k == k ≡ true
5448
==Refl {n} zero = refl
5549
==Refl {suc n} (suc k) = ==Refl {n} k
@@ -60,6 +54,15 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
6054
==Sym {suc n} (suc k) zero = refl
6155
==Sym {suc n} (suc k) (suc l) = ==Sym {n} k l
6256

57+
-- Properties of the Kronecker Delta
58+
deltaProp : {n : ℕ} (k l : Fin n) toℕ k <' toℕ l δ k l ≡ 0r
59+
deltaProp {suc n} zero (suc l) (s≤s le) = refl
60+
deltaProp {suc n} (suc k) (suc l) (s≤s le) = deltaProp {n} k l le
61+
62+
deltaPropSym : {n : ℕ} (k l : Fin n) toℕ l <' toℕ k δ k l ≡ 0r
63+
deltaPropSym {suc n} (suc k) (zero) (s≤s le) = refl
64+
deltaPropSym {suc n} (suc k) (suc l) (s≤s le) = deltaPropSym {n} k l le
65+
6366
deltaPropEq : {n : ℕ} (k l : Fin n) k ≡ l δ k l ≡ 1r
6467
deltaPropEq k l e =
6568
δ k l
@@ -71,12 +74,12 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
7174

7275
deltaComm : {n : ℕ} (k l : Fin n) δ k l ≡ δ l k
7376
deltaComm k l = cong (λ a if a then 1r else 0r) (==Sym k l)
74-
7577

7678
-- Definition of the cofactor matrix
7779
cof : {n : ℕ} FinMatrix R n n FinMatrix R n n
7880
cof {suc n} M i j = (MF (toℕ i +ℕ toℕ j)) · det {n} (minor i j M)
7981

82+
-- Behavior of the cofactor matrix under transposition
8083
cofTransp : {n : ℕ} (M : FinMatrix R n n) (i j : Fin n) cof (M ᵗ) i j ≡ cof M j i
8184
cofTransp {suc n} M i j =
8285
MF (toℕ i +ℕ toℕ j) · det (minor i j (M ᵗ))
@@ -92,10 +95,11 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
9295
adjugate : {n : ℕ} FinMatrix R n n FinMatrix R n n
9396
adjugate M i j = cof M j i
9497

98+
-- Behavior of the adjugate matrix under transposition
9599
adjugateTransp : {n : ℕ} (M : FinMatrix R n n) (i j : Fin n) adjugate (M ᵗ) i j ≡ adjugate M j i
96100
adjugateTransp M i j = cofTransp M j i
97101

98-
102+
-- Properties of WeakenFin
99103
weakenPredFinLt : {n : ℕ} (k l : Fin (suc (suc n))) toℕ k <' toℕ l k ≤'Fin weakenFin (predFin l)
100104
weakenPredFinLt {zero} zero one (s≤s z≤) = z≤
101105
weakenPredFinLt {zero} one one (s≤s ())
@@ -109,6 +113,7 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
109113
sucPredFin {zero} (suc k) (suc l) le = refl
110114
sucPredFin {suc n} zero (suc l) le = refl
111115
sucPredFin {suc n} (suc k) (suc l) (s≤s le) = refl
116+
112117

113118
adjugatePropAux1a : {n : ℕ} (M : FinMatrix R (suc (suc n)) (suc (suc n))) (k l : Fin (suc (suc n))) toℕ k <' toℕ l
114119
@@ -612,7 +617,7 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
612617
(MF (toℕ (predFin l) +ℕ toℕ z₁) · minor k z M (predFin l) z₁ ·
613618
det (minor (predFin l) z₁ (minor k z M)))))
614619
(λ i j
615-
DetRowAux2
620+
distributeOne
616621
(ind> (toℕ i) (toℕ j))
617622
(M l i · MF (toℕ k +ℕ toℕ i) ·
618623
(MF (toℕ (predFin l) +ℕ toℕ j) · minor k i M (predFin l) j ·
@@ -1506,7 +1511,7 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
15061511
minor k i M (strongenFin l le) j
15071512
· det (minor (strongenFin l le) j (minor k i M)))))
15081513
(λ i j
1509-
DetRowAux2
1514+
distributeOne
15101515
(ind> (toℕ i) (toℕ j))
15111516
( M l i · MF (toℕ k +ℕ toℕ i) ·
15121517
(MF (toℕ (strongenFin l le) +ℕ toℕ j) ·
@@ -1828,8 +1833,6 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
18281833
0r
18291834
18301835

1831-
1832-
18331836
adjugateInvRLcomponent : {n : ℕ} (M : FinMatrix R n n) (k l : Fin n) toℕ k <' toℕ l (M ⋆ adjugate M) k l ≡ (det M ∘ 𝟙) k l
18341837
adjugateInvRLcomponent {suc n} M k l le =
18351838
∑ (λ i M k i · (MF(toℕ l +ℕ toℕ i) · det(minor l i M)) )
@@ -1840,7 +1843,7 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
18401843
≡⟨ cong (λ a det M · a) (sym (deltaProp k l le)) ⟩
18411844
(det M ∘ 𝟙) k l
18421845
1843-
1846+
18441847
FinCompare : {n : ℕ} (k l : Fin n) (k ≡ l) ⊎ ((toℕ k <' toℕ l) ⊎ (toℕ l <' toℕ k))
18451848
FinCompare {zero} () ()
18461849
FinCompare {suc n} zero zero = inl refl
@@ -1851,7 +1854,8 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
18511854
... | inr (inl x) = inr (inl (s≤s x))
18521855
... | inr (inr x) = inr (inr (s≤s x))
18531856

1854-
1857+
-- The adjugate matrix divided by the determinant is the right inverse.
1858+
-- Component-wise version
18551859
adjugateInvRComp : {n : ℕ} (M : FinMatrix R n n) (k l : Fin n) (M ⋆ adjugate M) k l ≡ (det M ∘ 𝟙) k l
18561860
adjugateInvRComp {zero} M () ()
18571861
adjugateInvRComp {suc n} M k l with FinCompare k l
@@ -1890,6 +1894,8 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
18901894
... | inr (inl x) = adjugateInvRLcomponent M k l x
18911895
... | inr (inr x) = adjugateInvRGcomponent M k l x
18921896

1897+
-- The adjugate matrix divided by the determinant is the left inverse.
1898+
-- Component-wise version
18931899
adjugateInvLComp : {n : ℕ} (M : FinMatrix R n n) (k l : Fin n) (adjugate M ⋆ M) k l ≡ (det M ∘ 𝟙) k l
18941900
adjugateInvLComp M k l =
18951901
(adjugate M ⋆ M) k l
@@ -1917,9 +1923,10 @@ module adjugate (ℓ : Level) (P' : CommRing ℓ) where
19171923
(det M · 𝟙 k l)
19181924
19191925

1920-
1926+
-- The adjugate matrix divided by the determinant is the right inverse.
19211927
adjugateInvR : {n : ℕ} (M : FinMatrix R n n) M ⋆ adjugate M ≡ det M ∘ 𝟙
19221928
adjugateInvR M = funExt₂ (λ k l adjugateInvRComp M k l)
19231929

1930+
-- The adjugate matrix divided by the determinant is the left inverse.
19241931
adjugateInvL : {n : ℕ} (M : FinMatrix R n n) adjugate M ⋆ M ≡ det M ∘ 𝟙
19251932
adjugateInvL M = funExt₂ (λ k l adjugateInvLComp M k l)

Cubical/Algebra/Determinat/det.agda

Lines changed: 38 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
4242
MF zero = 1r
4343
MF (suc i) = (- 1r) · (MF i)
4444

45-
--Multiplicity of the minor factor
45+
--Properties of the minor factor
4646
sumMF : (i j : ℕ) MF (i +ℕ j) ≡ (MF i) · (MF j)
4747
sumMF zero j =
4848
MF j
@@ -63,6 +63,30 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
6363
sucMFRev : (i : ℕ) MF i ≡ (- 1r) · MF (suc i)
6464
sucMFRev i = solve! P'
6565

66+
MFplusZero : {n : ℕ} (i : Fin n) MF (toℕ i +ℕ zero) ≡ MF (toℕ i)
67+
MFplusZero i =
68+
MF (toℕ i +ℕ zero)
69+
≡⟨ sumMF (toℕ i) zero ⟩
70+
(MF (toℕ i) · MF zero)
71+
≡⟨ ·IdR (MF (toℕ i)) ⟩
72+
MF (toℕ i)
73+
74+
75+
MFsucsuc : {n m : ℕ} (j : Fin n) (k : Fin m)
76+
MF (toℕ (suc j) +ℕ (toℕ (suc k))) ≡ MF (toℕ j +ℕ toℕ k)
77+
MFsucsuc j k =
78+
MF (toℕ (suc j) +ℕ toℕ (suc k))
79+
≡⟨ sumMF (toℕ (suc j)) (toℕ (suc k)) ⟩
80+
(MF (toℕ (suc j)) · MF (toℕ (suc k)))
81+
≡⟨ refl ⟩
82+
((- 1r) · MF (toℕ j) · ((- 1r) · MF (toℕ k)) )
83+
≡⟨ solve! P' ⟩
84+
( MF (toℕ j) · MF ( toℕ k))
85+
≡⟨ sym (sumMF (toℕ j) (toℕ k))⟩
86+
MF (toℕ j +ℕ toℕ k)
87+
88+
89+
-- Other small lemmata
6690
+Compat : {a b c d : R} a ≡ b c ≡ d a + c ≡ b + d
6791
+Compat {a} {b} {c} {d} eq1 eq2 =
6892
a + c
@@ -71,6 +95,9 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
7195
≡⟨ cong (λ x b + x) eq2 ⟩
7296
b + d
7397
98+
99+
distributeOne : (a b : R) b ≡ a · b + (1r + (- a)) · b
100+
distributeOne a b = solve! P'
74101

75102
-- Definition of the determinat by using Laplace expansion
76103
det : {n} FinMatrix R n n R
@@ -164,9 +191,6 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
164191
det (minor zero j (minor k i M)))
165192
166193

167-
DetRowAux2 : (a b : R) b ≡ a · b + (1r + (- a)) · b
168-
DetRowAux2 a b = solve! P'
169-
170194
DetRowAux3a :
171195
{n : ℕ} (k : Fin (suc n))
172196
(M : FinMatrix R (suc (suc n)) (suc (suc n)))
@@ -952,7 +976,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
952976
minor (suc k) i M zero j
953977
· det (minor zero j (minor (suc k) i M))))
954978
(λ i j
955-
DetRowAux2 (ind> (toℕ i) (toℕ j))
979+
distributeOne (ind> (toℕ i) (toℕ j))
956980
(MF (toℕ (suc k) +ℕ toℕ i +ℕ toℕ j) · M (suc k) i ·
957981
minor (suc k) i M zero j · det (minor zero j (minor (suc k) i M))))
958982
@@ -1152,7 +1176,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
11521176
· det (minor k z₁ (minor zero z M)))
11531177
(λ i j
11541178
sym
1155-
(DetRowAux2
1179+
(distributeOne
11561180
(ind> (toℕ i) (toℕ j))
11571181
(MF (toℕ (suc k) +ℕ toℕ (suc j) +ℕ toℕ i) · minor zero i M k j ·
11581182
M zero i · det (minor k j (minor zero i M)))))
@@ -1338,7 +1362,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
13381362
det (minor i zero (minor zero (suc j) M))))
13391363
∎)
13401364

1341-
1365+
-- The determinant can also be expanded along the first column.
13421366
DetRowColumn : {n} (M : FinMatrix R (suc n) (suc n))
13431367
detC zero M ≡ det M
13441368
DetRowColumn {zero} M = refl
@@ -1960,20 +1984,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
19601984
i
19611985
j)
19621986

1963-
MFsucsuc : {n m : ℕ} (j : Fin n) (k : Fin m)
1964-
MF (toℕ (suc j) +ℕ (toℕ (suc k))) ≡ MF (toℕ j +ℕ toℕ k)
1965-
MFsucsuc j k =
1966-
MF (toℕ (suc j) +ℕ toℕ (suc k))
1967-
≡⟨ sumMF (toℕ (suc j)) (toℕ (suc k)) ⟩
1968-
(MF (toℕ (suc j)) · MF (toℕ (suc k)))
1969-
≡⟨ refl ⟩
1970-
((- 1r) · MF (toℕ j) · ((- 1r) · MF (toℕ k)) )
1971-
≡⟨ solve! P' ⟩
1972-
( MF (toℕ j) · MF ( toℕ k))
1973-
≡⟨ sym (sumMF (toℕ j) (toℕ k))⟩
1974-
MF (toℕ j +ℕ toℕ k)
1975-
1976-
1987+
-- The determinant expanded along a column is independent of the chosen column.
19771988
DetColumnZero : {n} (k : Fin (suc n)) (M : FinMatrix R (suc n) (suc n))
19781989
detC k M ≡ detC zero M
19791990
DetColumnZero {zero} zero M = refl
@@ -2046,7 +2057,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
20462057
(MF (toℕ z₁ +ℕ zero) · minor z (suc k) M z₁ zero ·
20472058
det (minor z₁ zero (minor z (suc k) M)))))
20482059
(λ i j
2049-
DetRowAux2
2060+
distributeOne
20502061
(ind> (toℕ i) (toℕ j))
20512062
(MF (toℕ i +ℕ toℕ (suc k)) · M i (suc k) ·
20522063
(MF (toℕ j +ℕ zero) · minor i (suc k) M j zero ·
@@ -2285,7 +2296,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
22852296
(MF (toℕ (suc j) +ℕ toℕ (suc k)) · minor i zero M j k ·
22862297
det (minor j k (minor i zero M)))))
22872298
(λ i j sym
2288-
(DetRowAux2 ( ind> (toℕ i) (toℕ j) )
2299+
(distributeOne ( ind> (toℕ i) (toℕ j) )
22892300
((MF (toℕ i +ℕ zero) · M i zero ·
22902301
(MF (toℕ (suc j) +ℕ toℕ (suc k)) · minor i zero M j k ·
22912302
det (minor j k (minor i zero M))))))) ⟩
@@ -2388,6 +2399,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
23882399
detC zero M
23892400
23902401

2402+
-- The determinant expanded along a column is the regular determinant.
23912403
DetColumn : {n} (k : Fin (suc n)) (M : FinMatrix R (suc n) (suc n))
23922404
detC k M ≡ det M
23932405
DetColumn k M =
@@ -2405,6 +2417,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
24052417
∑Mul1r = Sum.∑Mul1r (CommRing→Ring P')
24062418
∑Mulr1 = Sum.∑Mulr1 (CommRing→Ring P')
24072419

2420+
-- The determinant of the zero matrix is 0.
24082421
detZero : {n : ℕ} det {suc n} 𝟘 ≡ 0r
24092422
detZero {n} =
24102423
∑Zero
@@ -2421,6 +2434,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
24212434
24222435
)
24232436

2437+
--The determinant of the identity matrix is 1.
24242438
detOne : {n : ℕ} det {n} 𝟙 ≡ 1r
24252439
detOne {zero} = refl
24262440
detOne {suc n} =
@@ -2454,15 +2468,7 @@ module Determinat (ℓ : Level) (P' : CommRing ℓ) where
24542468
1r
24552469
24562470

2457-
MFplusZero : {n : ℕ} (i : Fin n) MF (toℕ i +ℕ zero) ≡ MF (toℕ i)
2458-
MFplusZero i =
2459-
MF (toℕ i +ℕ zero)
2460-
≡⟨ sumMF (toℕ i) zero ⟩
2461-
(MF (toℕ i) · MF zero)
2462-
≡⟨ ·IdR (MF (toℕ i)) ⟩
2463-
MF (toℕ i)
2464-
2465-
2471+
--The determinant remains unchanged under transposition.
24662472
detTransp : {n : ℕ} (M : FinMatrix R n n) det M ≡ det (M ᵗ)
24672473
detTransp {zero} M = refl
24682474
detTransp {suc n} M =

0 commit comments

Comments
 (0)