Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit abaf3c2

Browse files
committed
feat(algebra/category/Algebra/basic): Add free/forget adjunction. (#4620)
This PR adds the usual free/forget adjunction for the category of `R`-algebras. Co-authored-by: Adam Topaz <adamtopaz@users.noreply.github.com>
1 parent 07ee11e commit abaf3c2

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/algebra/category/Algebra/basic.lean

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Scott Morrison
55
-/
66
import algebra.algebra.basic
77
import algebra.algebra.subalgebra
8+
import algebra.free_algebra
89
import algebra.category.CommRing.basic
910
import algebra.category.Module.basic
1011

@@ -69,6 +70,28 @@ variables {R} {M N U : Module.{v} R}
6970
@[simp] lemma coe_comp (f : M ⟶ N) (g : N ⟶ U) :
7071
((f ≫ g) : M → U) = g ∘ f := rfl
7172

73+
variables (R)
74+
/-- The "free algebra" functor, sending a type `S` to the free algebra on `S`. -/
75+
@[simps]
76+
def free : Type* ⥤ Algebra R :=
77+
{ obj := λ S,
78+
{ carrier := free_algebra R S,
79+
is_ring := algebra.semiring_to_ring R },
80+
map := λ S T f, free_algebra.lift _ $ (free_algebra.ι _) ∘ f }
81+
82+
/-- The free/forget ajunction for `R`-algebras. -/
83+
@[simps]
84+
def adj : free R ⊣ forget (Algebra R) :=
85+
{ hom_equiv := λ X A,
86+
{ to_fun := λ f, f ∘ (free_algebra.ι _),
87+
inv_fun := λ f, free_algebra.lift _ f,
88+
left_inv := by tidy,
89+
right_inv := by tidy },
90+
unit := { app := λ S, free_algebra.ι _ },
91+
counit :=
92+
{ app := λ S, free_algebra.lift _ $ id,
93+
naturality' := by {intros, ext, simp} } } -- tidy times out :(
94+
7295
end Algebra
7396

7497
variables {R}

0 commit comments

Comments
 (0)