Skip to content

Commit 72226e5

Browse files
committed
universal property of polynomials as rings
1 parent 7005291 commit 72226e5

File tree

3 files changed

+44
-13
lines changed

3 files changed

+44
-13
lines changed

Cubical/Algebra/CommRing/Instances/Polynomials/Typevariate/OnCoproduct.agda

+36-12
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
module Cubical.Algebra.CommRing.Instances.Polynomials.Typevariate.OnCoproduct where
1111

1212
open import Cubical.Foundations.Prelude
13-
open import Cubical.Foundations.Function using (_∘_)
13+
open import Cubical.Foundations.Function using (_∘_; _$_)
1414
open import Cubical.Foundations.Structure using (⟨_⟩)
1515

1616
open import Cubical.Data.Sum as ⊎
@@ -45,10 +45,13 @@ module CalculatePolynomialsOnCoproduct (R : CommRing ℓ) (I J : Type ℓ) where
4545
mapVars (inr j) = var j
4646

4747
to∘MapVars : to .fst ∘ mapVars ≡ var
48-
to∘MapVars = funExt λ {(inl i) to .fst (constPolynomial _ _ $cr var i)
49-
≡⟨ cong (λ z z i) (evalInduce (R [ I ⊎ J ]) (constPolynomial R (I ⊎ J)) (var ∘ inl)) ⟩
50-
var (inl i) ∎;
51-
(inr j) (to .fst (var j) ≡⟨ cong (λ z z j) evalVarTo ⟩ var (inr j) ∎)}
48+
to∘MapVars =
49+
funExt λ {(inl i) to .fst (constPolynomial _ _ $cr var i)
50+
≡⟨ cong (λ z z i)
51+
(evalInduce (R [ I ⊎ J ])
52+
(constPolynomial R (I ⊎ J)) (var ∘ inl)) ⟩
53+
var (inl i) ∎;
54+
(inr j) (to .fst (var j) ≡⟨ cong (λ z z j) evalVarTo ⟩ var (inr j) ∎)}
5255

5356
from : CommRingHom (R [ I ⊎ J ]) ((R [ I ]) [ J ])
5457
from = inducedHom
@@ -59,7 +62,7 @@ module CalculatePolynomialsOnCoproduct (R : CommRing ℓ) (I J : Type ℓ) where
5962
evalVarFrom : from .fst ∘ var ≡ mapVars
6063
evalVarFrom = evalInduce ((R [ I ]) [ J ]) (constPolynomial (R [ I ]) J ∘cr constPolynomial R I) mapVars
6164

62-
toFrom : to ∘cr from ≡ (idCommRingHom _)
65+
toFrom : to ∘cr from ≡ (idCommRingHom (R [ I ⊎ J ]))
6366
toFrom =
6467
idByIdOnVars
6568
(to ∘cr from)
@@ -68,14 +71,35 @@ module CalculatePolynomialsOnCoproduct (R : CommRing ℓ) (I J : Type ℓ) where
6871
(to .fst ∘ from .fst ∘ var ≡⟨ cong (to .fst ∘_) evalVarFrom ⟩
6972
to .fst ∘ mapVars ≡⟨ to∘MapVars ⟩
7073
var ∎)
71-
{-
72-
fromTo : from ∘cr to ≡ (idCommRingHom _)
74+
75+
{- from and to are R[I]-algebra homomorphisms:
76+
this is true definitionally for to.
77+
-}
78+
fromAlgebraHom : from ∘cr I→I+J ≡ constPolynomial (R [ I ]) J
79+
fromAlgebraHom =
80+
hom≡ByValuesOnVars
81+
((R [ I ]) [ J ]) (constPolynomial (R [ I ]) J ∘cr constPolynomial R I)
82+
(from ∘cr I→I+J) (constPolynomial (R [ I ]) J)
83+
refl refl
84+
(funExt
85+
(λ i (from ∘cr I→I+J) .fst (var i)
86+
≡⟨ cong (from .fst)
87+
(evalOnVars (R [ I ⊎ J ])
88+
(constPolynomial R (I ⊎ J))
89+
(var ∘ inl) i) ⟩
90+
from .fst (var (inl i))
91+
≡⟨ evalOnVars ((R [ I ]) [ J ])
92+
(constPolynomial (R [ I ]) J ∘cr constPolynomial R I)
93+
mapVars (inl i) ⟩
94+
constPolynomial (R [ I ]) J $cr var i ∎))
95+
96+
fromTo : from ∘cr to ≡ (idCommRingHom $ (R [ I ]) [ J ])
7397
fromTo =
7498
idByIdOnVars
7599
(from ∘cr to)
76100
(from .fst ∘ to .fst ∘ constPolynomial (R [ I ]) J .fst ≡⟨⟩
77-
from .fst ∘ I→I+J .fst
78-
≡⟨ cong fst (hom≡ByValuesOnVars ((R [ I ]) [ J ]) {!from ∘cr I→I+J!} {!I→I+J!} {!!} {!!} {!!} {!!}) ⟩
101+
from .fst ∘ I→I+J .fst ≡⟨ cong fst fromAlgebraHom ⟩
79102
constPolynomial (R [ I ]) J .fst ∎)
80-
(from .fst ∘ to .fst ∘ var ≡⟨ {!!} ⟩ var ∎)
81-
-}
103+
(from .fst ∘ to .fst ∘ var ≡⟨ cong (from .fst ∘_) (funExt $ evalOnVars (R [ I ⊎ J ]) I→I+J (var ∘ inr) ) ⟩
104+
from .fst ∘ var ∘ inr ≡⟨ (funExt $ λ j evalOnVars _ _ _ (inr j)) ⟩
105+
var ∎)

Cubical/Algebra/CommRing/Instances/Polynomials/Typevariate/Properties.agda

+7-1
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,15 @@ module _ {R : CommRing ℓ} {I : Type ℓ'} (S : CommRing ℓ'') (f : CommRingH
223223
opaque
224224
unfolding var
225225
evalInduce : : I ⟨ S ⟩)
226-
evalVar (inducedHom S f φ) ≡ φ
226+
evalVar (inducedHom S f φ) ≡ φ
227227
evalInduce φ = refl
228228

229+
opaque
230+
unfolding var
231+
evalOnVars : : I ⟨ S ⟩)
232+
(i : I) inducedHom S f φ .fst (var i) ≡ φ i
233+
evalOnVars φ i = refl
234+
229235
opaque
230236
unfolding var
231237
induceEval : (g : CommRingHom (R [ I ]) S)

Cubical/Algebra/CommRing/Properties.agda

+1
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ module _ where
162162
RingHom→CommRingHom
163163
(compRingHom (CommRingHom→RingHom f) (CommRingHom→RingHom g))
164164

165+
infixr 9 _∘cr_ -- same as functions
165166
_∘cr_ : {R : CommRing ℓ} {S : CommRing ℓ'} {T : CommRing ℓ''}
166167
CommRingHom S T CommRingHom R S CommRingHom R T
167168
g ∘cr f = compCommRingHom f g

0 commit comments

Comments
 (0)