All the mathematics presented here, is from Ingo Blechschmidt’s thesis or unpublished work of David Jaz Myers. The formalization in Agda is due to Felix Cherubini.
Let 𝔸 be a commutative ring, and let us use the same notation as in Spec
module _ (𝔸asRing : CommRing {ℓ}) where open SpecExamples 𝔸asRing
For any algebra R over 𝔸, there is a map from R to 𝔸-valued functions on Spec R:
evMap : (R : 𝔸-Alg) → CommAlgebra.Carrier R → (Spec R → 𝔸′) evMap _ r = λ f → (AlgebraHom.map f) r
This is also a homomorphism of rings. To make that statement, we have to define a ring structure on the 𝔸-valued functions. Let us first construct the pointwise ring structure in general:
pointwiseRingStructure : (X : Type ℓ) (R : CommRing {ℓ}) → CommRing {ℓ} pointwiseRingStructure X R = let open CommRingStr (snd R) isSetX→R = isOfHLevelΠ 2 (λ _ → isSetCommRing R) in (X → fst R) , (commringstr (λ _ → 0r) (λ _ → 1r) (λ f g → (λ x → f x + g x)) (λ f g → (λ x → f x · g x)) (λ f → (λ x → - f x)) (makeIsCommRing isSetX→R (λ f g h i x → +Assoc (f x) (g x) (h x) i) (λ f i x → +Rid (f x) i) (λ f i x → +Rinv (f x) i) (λ f g i x → +Comm (f x) (g x) i) (λ f g h i x → ·Assoc (f x) (g x) (h x) i) (λ f i x → ·Rid (f x) i) (λ f g h i x → ·Rdist+ (f x) (g x) (h x) i) λ f g i x → ·-comm (f x) (g x) i))
This can be extended to an algebra structure:
pointwiseAlgebra : {R : CommRing {ℓ}} (X : Type ℓ) (A : CommAlgebra R) → CommAlgebra R pointwiseAlgebra X A = let open CommAlgebra A isSetX→A = isOfHLevelΠ 2 (λ _ → isSetCommRing (CommAlgebra→CommRing A)) in commalgebra (X → CommAlgebra.Carrier A) (λ _ → 0a) (λ _ → 1a) (λ f g → (λ x → f x + g x)) (λ f g → (λ x → f x · g x)) (λ f → (λ x → - f x)) (λ r f → (λ x → CommAlgebra._⋆_ A r (f x))) (makeIsCommAlgebra isSetX→A (λ f g h i x → +-assoc (f x) (g x) (h x) i) (λ f i x → +-rid (f x) i) (λ f i x → +-rinv (f x) i) (λ f g i x → +-comm (f x) (g x) i) (λ f g h i x → ·Assoc (f x) (g x) (h x) i) (λ f i x → ·Lid (f x) i) (λ f g h i x → ·Ldist+ (f x) (g x) (h x) i) (λ f g i x → ·-comm (f x) (g x) i) (λ r s f i x → ⋆-assoc r s (f x) i) (λ r s f i x → ⋆-ldist r s (f x) i) (λ r f g i x → ⋆-rdist r (f x) (g x) i) (λ f i x → ⋆-lid (f x) i) λ r f g i x → ⋆-lassoc r (f x) (g x) i)
Now let us refer to the commutative ring of 𝔸-valued functions on a type X with ‘𝒪′ X’:
𝒪′ : (X : Type ℓ) → CommRing {ℓ} 𝒪′ X = pointwiseRingStructure X 𝔸asRing
And the algbera with ‘𝒪 X’:
𝒪 : (X : Type ℓ) → 𝔸-Alg 𝒪 X = pointwiseAlgebra X 𝔸
Going back to where we started, we can now show that the evaluation map is a homorphism of 𝔸-algberas:
ev : {R : 𝔸-Alg} → Hom R (𝒪 (Spec R)) ev {R = R} = let open CommAlgebra ⦃...⦄ instance _ : 𝔸-Alg _ = 𝔸 _ : 𝔸-Alg _ = R in algebrahom (evMap R) (λ r s i → λ {(algebrahom f +Hom _ _ _) → (f (r + s) ≡⟨ +Hom _ _ ⟩ f r + f s ∎) i}) (λ r s i → λ {(algebrahom f _ ·Hom _ _) → (f (r · s) ≡⟨ ·Hom _ _ ⟩ f r · f s ∎) i}) (λ i → λ {(algebrahom f _ _ pres1 _) → (f 1a ≡⟨ pres1 ⟩ 1a ∎) i}) λ r x i → λ {(algebrahom f +Hom _ _ ⋆Comm) → (f (CommAlgebra._⋆_ R r x) ≡⟨ ⋆Comm _ _ ⟩ CommAlgebra._⋆_ 𝔸 r (f x) ∎) i}