@@ -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)
0 commit comments