La Matematica è fatta di diverse aree distinte:
La teoria delle categorie studia le teorie matematiche come un oggetto matematico a sé stante.
Ci sono omomorfismi (di teorie) con cui confrontarne due distinte
Gli oggetti matematici di un dato tipo sono punti in una grande scatola, collegati da frecce componibili (gli omomorfismi)
composizione
Eilenberg, S., and Mac Lane S., "General theory of natural equivalences." (1945)
La teoria delle categorie si usa per...
...lungo da raccontare. Specie a dei non matematici.
Fin dall'inizio però si è tentato di usarla per fare matematica applicata: se si sa la CT, essa
Entrambe caratteristiche desiderabili per uno scienziato
Caveat: le sezioni successive hanno la seguente struttura:
Gli esperti di X troveranno le "definizioni" della loro disciplina riduttive, pressapochiste e ingenue. E si offenderanno.
E' esattamente quel che voglio.
Un "linguaggio naturale" è un insieme di simboli generato induttivamente, e soggetto a un certo numero di regole di riscrittura.
Da un insieme di tipi sintattici primitivi (nome, aggettivo, frase, verbo, avverbio...) si definiscono tipi derivati frazionari a/b e a\b, e congiunzioni di tipi sintattici
Ogni linguaggio naturale è una categoria i cui oggetti sono i tipi sintattici di quella lingua, e dove esiste un morfismo f : p → q se esiste una riduzione di p a q usando le regole di riscrittura
(Lambek, 1954) Parlare una lingua naturale equivale a operare una riduzione nel un calcolo dei sequenti di un sistema deduttivo; ossia, equivale a formulare una proposizione (nel senso tecnico) che il linguaggio (nel senso tecnico) ha la capacità espressiva di formulare.
Tram-mļöi hhâsmařpţuktôx
On the contrary, I think it may turn out that this rugged mountain range trails off at some point
MQ è una teoria che si può esprimere nella categoria
spazi di Hilbert + mappe lineari
Ossia, MQ si può re-interpretare in tutte le categorie che hanno le stesse proprietà formali della categoria Hilb.
Gli operatori vengono rappresentati mediante diagrammi di stringa:
In modo tale che le operazioni sugli elementi dell'algebra di quegli operatori corrispondano a operazioni grafiche sui diagrammi di stringa:
Come farebbe matematica una macchina?
Non si sa. Ma per la teoria delle categorie, la risposta è in un linguaggio funzionale con tipi dipendenti.
class Mona m where -- "Mona"
-- required constructors
binda :: m a -> ( a -> m b) -> m b
torna :: a -> m a
-- optional constructors
(>>) :: m a -> m b -> m b
fail :: String -> m a
¹In realtà questo è falso. E' quasi una categoria
Per esempio la monade Maybe: gestisce una computazione fallibile:
data Forse a = Solo a
| Niente
deriving (Show, Eq)
instance Mona Forse where
binda Niente _ = Niente
binda (Solo x) f = f x
torna = Solo
f :: Int -> Forse Int
f 0 = Niente
f n = Solo (2*n)
-- binda Niente Forse
-- => Niente
-- binda (Solo 7) f
-- => Solo 14
newtype Parsa a = Parsa
{ runParsa :: String -> Forse (String, a)
}
instance Mona Parsa where
binda (Parsa x) f = Parsa ?????????¹
torna x = Parsa (\s -> Solo (s, x))
Il parsing di testi si fa usando delle monadi:
some
raw
text
tizo@posto.it
caio@taltech.ee
pi.pacciani@mat.unifi.it
Parsa Email
¹ Definite prima istanze di Functor e di Applicative per Parsa. (Hint)
Un po' di cose vengono meglio con la teoria delle categorie: