Categorii monoidale
Adesea construcțiile întâlnite în teoria categoriilor au anumite proprietăți prin care putem modela anumite lucruri din limbaje de programare sau din lumea reală. De exemplu, categoria este folosită pentru a modela sisteme de tipuri din limbaje de programare lucru care este dat de faptul că este o categorie monoidală în mai multe moduri. Un mod prin care este o categorie monoidală este prin produsul cartezian.
Definiție: Categorie monoidală
O categorie monoidală este o categorie echipată cu:
- Un functor din produsul categoriei cu ea însăși, numit produsul tensorial.
- Un obiect numit obiect unitate sau unitatea tensorului.
- Un izomorfism natural cu componente de forma numit asociatorul.
- Un izomorfism natural cu componente de forma numit unitorul stâng.
- Un izomorfism natural cu componente de forma called unitorul drept.
astfel încât următoarele doua diagrame comută pentru toate obiectele:
Vom abrevia categoriile monoidale prin omiterea transformărilor naturale dacă aceste se pot deduce din context.
Categorii monoidale stricte
O categorie monoidală strictă (strict monoidal) este o categorie monoidală în care unitorul și asociatorul sunt identități.
Categorii monoidale împletite (braided)
O categorie monoidală împletită (sau braided) este o categorie monoidală care este echipată cu un izomorfism natural numită împletirea (sau braiding) astfel încât următoarele două diagrame comută:
Pe scurt, transformarea naturală trebuie să fie compatibilă cu asociatorul categoriei monoidale.
Categorii monoidale simetrice
O categorie monoidală simetrică este o categorie braided în care toate componentele pentru braiding satisfac .
Categoriile monoidale simetrice nu trebuie confundate cu cele braided pentru că chiar dacă avem un izomorfism natural acesta nu conține neapărat inversele tuturor componentelor sale. Diferența aici o putem exprima printr-o analogie, dacă avem două fire putem să le împletim dar ca să le despletim trebuie să facem mișcarea în direcția opusă împletirii, nu încă o împletire. În cazul simetric, dacă rotim două puncte în jurul mijlocului dintre ele la 180 de grade putem face două rotații ca să ajungem în poziția inițială. Analogia nu este perfectă dar expune ideea.
Categorii monoidale închise
O categorie monoidală este închisă la dreapta, respectiv la stânga dacă avem functorii adjuncți , respectiv . Zicem că este monoidal bi-închisă dacă este monoidal închisă la dreapta și la stânga.
În general, când ne vom referi la categorii închise ne vom referii când produsul monoidal este simetric, atunci este automat bi-închisă. Aceste adjuncții fac ca izomorfismul să nu fie altceva decât conceptul de currying din calcul lambda dar generalizat.
O consecință aici este că unitatea monoidală și unitatea pentru condiția de închidere e aceiași (până la un izomorfism):
Izomorfismul între mulțimile hom se reflect și în cazul pentru hom-ul intern:
Atenție! Obiectele ale hom-ului intern nu sunt neapărat mulțimi. În cazul pentru hom-ul intern sunt mulțimi dar pentru o categorie arbitrară nu este neapărat adevărat.
Categorii monoidale carteziene
O categorie este monoidal carteziană (sau zis doar carteziană) dacă strucura monoidală este dată de produsul cartezian și unitatea este obiectul terminal.
De exemplu, categoria este carteziană iar obiectul identitate este mulțimea singleton pentru că , . Practic, putem alcătui dintr-o mulțime o mulțime de perechi adăugând în stânga sau în dreapta elementul din mulțimea singleton și proiecta elementele înapoi în mulțimea originală.
Categoriile carteziene sunt categorii simetrice.
Categorii carteziene închise
O categorie carteziană închisă este o categorie carteziană care este închisă în relație cu produsul cartezian. Equivalent, o categorie carteziană închisă este co categorie careȘ
- are un obiect terminal
- are toate produsele binare
- are toate obiectele exponențiale
Din această definiție recuperăm noțiunile clasice de curry și uncurry din calcul lambda pentru că avem izomofismul ce corespunde la a transforma o funcție într-o funcție . În alte cuvinte, hom-ul intern este același cu obiectul exponențial .
Categorii monoidale cocarteziene
O categorie este monoidal cocarteziană (sau zis doar cocarteziană) dacă strucura monoidală este dată de coprodusul cartezian și unitatea este obiectul inițial.
De exemplu, categoria este cocarteziană iar obiectul identitate este mulțimea vidă pentru că , . Dacă facem uniunea disjunctă a unei mulțimi cu mulțimea vidă obține aceeași mulțime.
Categoriile cocarteziene sunt categorii simetrice.