Wprowadzenie
W poniższym wykładzie wprowadzamy formalnie pojęcie funkcji. Bardzo duży fragment współczesnej matematyki dotyczy właśnie badania własności funkcji. W teorii zbiorów funkcje są relacjami, które spełniają dodatkowy warunek jednoznaczności. Każda funkcja jest więc zbiorem par. W teorii zbiorów, której pojęciem pierwotnym jest należenie do zbioru, reprezentowanie funkcji za pomocą zbiorów jest pewną koniecznością. W praktyce jednak patrzymy na funkcje raczej jako na operacje, działające na elementach pewnych zbiorów. Często do opisu funkcji używamy wzorów, np. \( f(a)=a^2 \). Warto jednak podkreślić różnicę pomiędzy wzorem a funkcją. Przykładowy wzór może opisywać wiele funkcji, w zależności od tego, z jakiego zbioru elementy będziemy podstawiać w miejsce \( a \), a nawet od tego, jak będziemy rozumieć podnoszenie do kwadratu (np. przez \( a^2 \) oznaczaliśmy iloczyn kartezjański \( a\times a \), ale równocześnie dla liczby naturalnej \( n \) przez \( n^2 \) będziemy oznaczać jej kwadrat). W kolejnych wykładach przekonamy się również, że istnieją funkcje, których nie da się opisać żadnym wzorem.
Warto wspomnieć, że rozważa się również teorie, w których pierwotnymi pojęciami są właśnie funkcje i składanie funkcji. Okazuje się, że bardzo wiele twierdzeń klasycznej matematyki (opartej na teorii zbiorów) da się udowodnić na ich gruncie. Takiemu właśnie podejściu poświęcony jest wykład Teoria kategorii dla informatyków.