Joukko-oppi
Joukko-oppi on joukkojen ominaisuuksiin perehtynyt matematiikan osa-alue. Joukko-opilla voidaan katsoa olevan matematiikalle perustavan­laatuinen merkitys, sillä sen avulla voidaan määritellä erilaiset matemaattiset oliot joukoiksi ja matemaattiset teoriat (kuten analyysin perus­lauseet) voidaan katsoa väitteiksi joukoista. Sitä pidetään siis yleis­maailmallisena modernin tieteellisen matematiikan esittämis­muotona.
Nykyisen joukko-opin merkittävimpänä perustajana voidaan pitää saksalaista matemaatikkoa Georg Cantoria (1845–1918), joka sai ajatuksen tutkiessaan Fourier'n sarjoja. Cantorin työ sai aikanaan hyvän vastaanoton, ja hänen aikansa merkittävistä matemaatikoista sitä tutki hänen kanssaan läheisessä yhteistyössä muun muassa Richard Dedekind. Naiivin joukko-opin paradoksien löytymisen jälkeen laadittiin joukko-opille 1900-luvun alkupuolella useita aksioomajärjestelmiä, joista tunnetuimman muodostavat Zermelon–Fraenkelin aksioomat täydennettynä valinta-aksioomalla.
Yleis­kielessä joukko-opilla viitataan usein 1960- ja 1970-luvuilla toteutettuun, mutta lyhyt­aikaiseksi jääneeseen koulujen matematiikan opetuksen uudistukseen, niin sanottuun uuteen matematiikkaan, jossa joukko-oppi tuotiin uutena metodina matematiikan perusteiden koulu­opetukseen.
Matematiikan erikoiset oppialat ovat tavanomaisesti syntyneet ja kehittyneet monien eri tutkijoiden yhteistyön ja vuorovaikutuksen tuloksena. Joukko-oppi on kuitenkin saanut alkunsa eritoten 
yhdestä ainoasta, Georg Cantorin vuonna 1874 julkaisemasta tutkielmasta ”Kaikkien reaalisten algebrallisten lukujen luonteen­omaisista ominaisuuksista.”
Jo 400-luvulla eaa. kreikkalainen matemaatikko Zenon Elealainen kuten samanaikaisesti myös intialaiset matemaatikot painiskelivat äärettömän käsitteen ongelmakohtien parissa. Aiheen myöhemmistä tutkijoista erityislaatuisen huomion saa Bernard Bolzano 1800-luvun alussa. Nykyisenkaltainen käsitys äärettömyyden olemuksesta sai alkunsa vuosina 1867–1871 Cantorin tutkiessa lukuteoriaa. Vuonna 1872 Cantor tapasi Richard Dedekindin ja sai häneltä vaikutteita ajatuksiinsa, jotka johtivat vuonna 1874 julkaistuun tutkielmaan.
Alkuun Cantorin työhön suhtauduttiin vaihtelevin mieli­pitein. Cantorin matemaatikkokollegat Karl Weierstrass ja Dedekind tukivat häntä, mutta eriäviä mielipiteitä esitti Leopold Kronecker, 
jota pidetään nykyisin matemaattisen konstrukti­vismin perustajana. Cantorin joukko-oppi sai kuitenkin pian suuren ja laajahkon vastaanoton, sillä Cantorin käsitteet osoittautuivat jossain määrin hyödyllisiksi. Niitä olivat eri joukkojen välinen kääntäen yksi­käsitteinen vastaavuus eli bijektio, samoin todistus, että reaalilukujen joukon mahtavuus on suurempi kuin kokonais­lukujen, sekä ”äärettömyyksien äärettömyys” (”Cantorin paratiisi”), joka seuraa potenssi­joukon ominaisuuksista. Joukko-opin käyttö­kelpoisuutta kuvaili Arthur Schoenfliesin Kleinin ensyklopediassa vuonna 1898 julkaisema artikkeli ”Mengen­lehre”.
Joukko-opin toinen tärkeä kehitysvaihe sattui 1900-luvun alkuun, kun havaittiin, että Cantorin joukko-oppi johti erinäisiin risti­riitoihin, joita sanotaan anti­nomioksi tai para­dokseiksi. Bertrand Russell ja Ernst Zermelo löysivät toisistaan riippumatta yksin­kertaisimman ja tunnetuimman paradoksin, jota nykyisin tunnetaan Russellin paradoksina. Se käsittelee kaikkien niiden joukkojen joukkoja, jotka eivät ole itsensä alkioita, mikä johtaa risti­riitaan, sillä tämän joukon olisi oltava itsensä alkio siinä ja vain siinä tapauksessa, ettei se sellainen ole. Vuonna 1899 Cantor oli itse asettanut kysymyksen siitä, mikä on kaikkien joukkojen joukon kardinaliteetti, ja havaitsi myös tämän kysymyksen johtavan paradoksiin. Russell käytti para­doksiaan teemana vuonna 1903 laatimassaan yhteen­vedossa manner­maisesta matematiikasta "The Principle of Mathematics" opuksessaan.
Joukko-oppi oli kuitenkin levinnyt matemaatikkojen keskuudessa jo niin laajalti omaksutuksi, että väittely para­dokseista ei johtanut sen hylkäämiseen. Zermelon työ vuodelta 1908 ja Abraham Fraenkelin työ vuodelta 1922 johtivat aksiooma­järjestelmään ZFC, josta tuli yleisimmin käytetty joukko-opin aksioomajärjestelmä. Reaalianalyysin tutkijat kuten Henri Lebesgue osoittivat joukko-opin suuren matemaattisen käyttökelpoisuuden, ja siitä onkin sittemmin tullut modernin matematiikan perusta. Sitä käytetään usein perustavana järjestelmänä, vaikka on tosiasia että joillakin matematiikan aloilla kategoriateoriaa pidetään parempana perustana.
Joukkoon kuuluvia olioita kutsutaan alkioiksi, ja ne voivat olla mitä tahansa ihmisen havaintoon tai ajatukseen perustuvia. Se, että alkio "o" "kuuluu" tiettyyn joukkoon "A", on binäärirelaatio alkion ja joukon välillä, ja sille käytetään merkintää "o" ∈ "A". Joukotkin voivat olla toisen joukon alkioita.
Jos joukossa on vain muutama alkio, se voidaan esittää luettelo­muodossa. Tällöin alkiot erotetaan toisistaan pilkuilla, ja luettelo ympäröidään aalto­suluilla. Esimerkiksi {1, 2, 3, 4} tarkoittaa joukkoa, johon kuuluvat luvut 1, 2, 3 ja 4. Joukon katsotaan olevan sama joukko, lueteltiinpa sen alkiot missä järjestyksessä tahansa; toisin on esimerkiksi järjestettyjen parien ja lukujonojen tapauksessa.
Joukon "sisältyminen" toiseen joukkoon on binäärirelaatio joukkojen välillä. Jos kaikki joukon "A" alkiot ovat myös joukon "B" alkioita, joukko "A" "sisältyy" joukkoon "B" eli se on "B":n osajoukko, mikä merkintään "A" ⊆ "B". Esimerkiksi joukko {1,2} on joukon {1,2,3} osajoukko, mutta joukko {1,4} ei ole. Määritelmän perusteella on selvää, että jokainen joukko on itsensä osajoukko. Lisäksi määritellään, että "A" on "B":n aito osajoukko, jos "A" on "B":n osajoukko, mutta "A" ei ole sama joukko kuin "B". Yhtäpitävästi voidaan määritellä myös, että "A" on "B":n aito osajoukko, jos "A" on "B":n osajoukko, mutta "B" ei ole "A":n osajoukko.
Samaan tapaan kuin aritmetiikassa käsitellään luvuille määriteltyjä lasku­toimituksia, on myös joukkojen välille määritelty operaatioita, joiden avulla voidaan muodostaa uusia joukkoja. Sellaisia ovat:
Esimerkiksi joukkojen {1, 2, 3} ja {2, 3, 4} symmetrinen erotus on joukko {1, 4}.
Eräitä matematiikassa keskeisen tärkeitä joukkoja ovat tyhjä joukko (ainoa joukko, jossa ei ole yhtään alkiota), luonnollisten lukujen joukko ja reaalilukujen joukko.
Joukkoa, jonka alkiot ovat joukkoja, kutsutaan perheeksi tai joukkoperheeksi. Esimerkiksi sigma-algebra ja potenssijoukko ovat joukkoperheitä.
Kahta joukkoa sanotaan yhtä mahtaviksi, jos on olemassa bijektio, jolla toinen niistä voidaan kuvata toiselle. Jos tällaista bijektiota ei ole, mutta jokin "B":n osajoukko on yhtä mahtava kuin "A", sanotaan, että "B" on "aidosti mahtavampi" kuin A.
Yhtä mahtavilla joukoilla sanotaan olevan sama "kardinaliteetti". Äärelliset joukot ovat yhtä mahtavia, jos ja vain jos niissä on yhtä monta alkiota. Mikään äärellinen joukko ei ole yhtä mahtava minkään aidon osa­joukkonsa kanssa. Sitä vastoin äärettömillä joukoilla on sellaisiakin aitoja osajoukkoja, joiden kanssa ne ovat yhtä mahtavia. Esimerkiksi voidaan osoittaa, että luonnollisten lukujen joukko formula_1 on yhtä mahtava kuin rationaalilukujen joukko formula_2, vaikka vain osa rationaali­luvuista on luonnollisia lukuja. Sitä vastoin reaalilukujen joukko formula_3 on aidosti mahtavampi kuin rationaali­lukujen joukko, sillä ei ole olemassa sellaista bijektiota, jolla nämä joukot voitaisiin kuvata toisilleen. Ääretöntä joukkoa sanotaan numeroitu­vaksi, jos se on yhtä mahtava kuin luonnollisten lukujen joukko, muussa tapauksessa yli­numeroituvaksi. Esimerkiksi rationaali­lukujen joukko on siis numeroituva, reaalilukujen joukko yli­numeroituva.
Cantorin lauseen mukaan jokaisen äärettömänkin joukon potenssijoukko on aidosti mahtavampi kuin kyseinen joukko itse. Voidaan osoittaa, että luonnollisten lukujen joukon potenssi­joukko on yhtä mahtava kuin reaali­lukujen joukko.
Kysymys siitä, onko olemassa joukkoja, jotka ovat aidosti mahtavampia kuin formula_1 mutta aidosti vähemmän mahtavia kuin formula_3, tunnetaan kontinuumihypoteesina. Paul Cohen osoitti vuonna 1963, että hypoteesia ei Zermelon-Frankelin aksioomien avulla voida todistaa oikeaksi eikä vääräksi.
Puhdas joukko on joukko, jonka kaikki alkiot ovat joukkoja, samoin kaikkien sen alkioina olevien joukkojen alkiot ja niin edelleen. Esimerkiksi joukko , jonka ainoa alkio on tyhjä joukko, on ei-tyhjä puhdas joukko. Nykyisessä joukko-opissa rajoitutaan usein käsittelemään puhtaiden joukkojen muodostamaa von Neumannin universumia, ja monet joukko-opin aksiooma­järjestelmät on laadittu käsittelemään vain näitä. Tällä rajoituksella saavutetaan useita teknisiä etuja eikä teorian yleispätevyydestäkään menetetä kovin paljon, koska lähes kaikki matemaattiset käsitteet voidaan mallintaa pelkillä puhtailla joukoilla. Puhtaat joukot von Neumannin universumissa voidaan järjestää kumulatiiviseksi hierarkiaksi sen mukaan, kuinka pitkälle niiden alkiota, alkioiden alkioita ja niin edelleen on olemassa. Tässä hierarkiassa jokaiseen joukkoon liittyy ordinaaliluku a, jota sanotaan sen "asteeksi" (). Puhtaan joukon X aste määritellään sen alkioiden aste­lukujen seuraajien pienimmäksi ylä­rajaksi. Esimerkiksi tyhjän joukon aste on 0, kun taas joukon  aste on 1, sillä sen ainoa alkio on tyhjä joukko. Jokaista ordinaali­lukua "a" kohti voidaan määritellä joukko "V", johon kuuluvat kaikki puhtaat joukot, joiden aste on pienempi kuin "a". Koko von Neumannin universumi muodosta joukon, jolle käytetään merkintää "V".
Joukko-opin alkeita voidaan käsitellä epä­muodollisesti ja intuitiivisesti, ja niin sitä onkin käsitelty kouluissa Venn-diagrammien avulla. Tämä intuitiivinen lähestymistapa olettaa, että kohteista, jotka toteuttavat tietyn ehdon, voidaan aina muodostaa joukko. Tämä oletus, joka tunnetaan nimellä "abstraktioskeema" johtaa kuitenkin para­dokseihin, joita yksin­kertaisimpia ja tunnetuimpia ovat Russellin paradoksi ja Burali-Fortin paradoksi. Aksiomaattinen joukko-oppi kehitettiin alun perin, jotta tällaisista para­dokseista päästäisiin eroon.
Joukko-opin aksiooma­järjestelmissä abstraktio­skeema onkin yleensä korvattu ns. "erotteluskeemalla" tai "korvausskeemalla". Erottelu­skeeman mukaan eivät kaikki tietyn ehdon toteuttavat kohteet muodosta joukkoa, mutta ne jonkin annetun joukon alkiot, jotka toteuttavat tietyn ehdon, muodostavat joukon. Täten esimerkiksi sellaista joukkoa, jota Russellin paradoksi käsittelee, ei voida muodostaa, koska ”kaikkien joukkojen joukkoa” ei hyväksytä. Korvaus­skeeman mukaan taas jossakin joukossa määritellyn funktion arvot muodostavat joukon.
Yleisimmin käytetyt joukko-opin aksiooma­järjestelmät olettavat, että kaikki joukot muodostavat kumulatiivisen hierarkian. Sellaisia järjestelmiä on kahta tyyppiä:
Edellä mainittuja järjestelmiä voidaan muokata niin, että sallitaan myös urelementit, jotka eivät itse ole joukkoja mutta voivat kuulua johonkin joukkoon.
NFU ("New Foundations")- ja "NF" -järjestelmät eivät perustu kumulatiivisen hierarkiaan. Näistä NFU sisältää myös urelementit, NF ei. NF ja NFU sisältävät myös ”kaiken joukon”, johon nähden jokaisella joukolla on komplementti. Näissä järjestelmissä urelementeilla on merkitystä, koska NF:ssä, mutta ei NFU:ssa, on joukkoja, joihin nähden valinta-aksiooma ei päde.
Konstruktiivisen joukko-opin järjestelmät kuten CST, CZF ja IZF yhdistävät aksioomansa intuitionistiseen logiikkaan ensimmäisen kertaluvun logiikan sijasta. Eräät muut systeemit hyväksyvät tavanomaisen ensimmäisen kertaluvun logiikan mutta käyttävät epä­standardia kuulumis­relaatiota. Sellainen on esimerkiksi sumea joukko-oppi, joissa lause, jonka mukaan tietty alkio kuuluu tiettyyn joukkoon, ei välttämättä ole yksin­kertaisesti "tosi" tai "epätosi". Tähän liittyvät myös ZFC:n Boolen-arvoiset mallit.
Edward Nelson ehdotti vuonna 1977 ZFC:n laajennettua versiota, internaalista joukko-oppia.
Monet matemaattiset käsitteet voidaan määritellä täsmällisesti vain joukko-opin käsitteiden avulla. Esimerkiksi niinkin erilaiset matemaattiset struktuurit kuin graafit, monistot, renkaat ja vektori­avaruudet voidaan kaikki määritellä joukoiksi, jotka toteuttavat tietyt (aksiomaattiset) ehdot. ekvivalenssi- ja järjestysrelaatiot ovat yleisiä kaikilla matematiikan aloilla, ja matemaattisten relaatioiden teoria voidaan esittää joukko-opin avulla.
Joukko-oppi on myös lupaava perustava järjestelmä suurelle osalle matematiikkaa. Siitä lähtien kun teoksen "Principia Mathematica" ensimmäinen nide ilmestyi, on väitetty, että useimmat tai jopa kaikki matemaattiset teoreemat voidaan johtaa asianmukaisesti laaditusta joukko-opin aksiooma­järjestelmästä, johon on ensimmäisen ja toisen asteen logiikan avulla täydennetty monilla määritelmillä. Esimerkiksi luonnollisten ja reaalilukujen ominaisuudet voidaan johtaa joukko-opista, sillä jokainen luku­alue voidaan määritellä jossakin äärettömässä joukossa määriteltyyn ekvivalenssirelaatioon liittyvien ekvivalenssi­luokkien joukkona.
Joukko-opin asema matemaattisen analyysin, topologian, abstraktin algebran ja diskreetin matematiikan perustana on niin ikään kiistaton; matemaatikot hyväksyvät ainakin peri­aatteessa, että näiden alojen teoreemat voidaan kohtaa asianmukaisten määritelmien ja joukko-opin aksioomien avulla. Kuitenkin vain harvat moni­mutkaisten matemaattisten teoreemojen johtamiset joukko-opista on muodollisesti varmistettu, koska sellaiset muodolliset johtamiset ovat usein paljon pidempiä kuin luonnolliseen kieleen perustuvat todistukset, joita matemaatikot yleisesti käyttävät. Eräs varmistusprojekti, Metamath, sisältää yli 10 000 matemaattista teoreemaa, jotka on johdettu ZFC-aksioomeista ensimmäisen kertaluvun logiikan avulla.
Joukko-oppi ja monet siihen liittyvät erityisalat ovat matematiikassa laajan tutkimuksen kohteina.
Kombinatorinen joukko-oppi on äärellisten joukkojen kombinatoriikan laajennus, jossa käsitellään myös äärettömiä joukkoja. Siihen kuuluvat kardinaaliaritmetiikka ja Ramseyn lauseen yleistykset kuten Erdósin-Radon lause.
Cantorin määrittelemässä, Zermelon ja Fraenkelin aksiomatisoimassa joukko-opissa kohde joko kuuluu tiettyyn joukkoon tai ei kuulu. Lotfi A. Zadehin kehittämässä Sumeassa joukko-opissa tätä ehtoa on lievennetty siten, että kohteella on joukossa "jäsenyyden aste", joka on luku 0:n ja 1:n välillä. Esimerkiksi henkilön kuuluminen ”pitkien ihmisten” joukkoon ei ole yksi­selitteisesti määriteltävissä siten, että jokainen joko kuulu siihen tai ei, ja sumeassa joukko-opissa kuulumisen astetta esittävä luku voi olla esimerkiksi 0,75.
Suuri kardinaali on kardinaaliluku, jolla on jokin ylimääräinen ominaisuus. Monia sellaisia ominaisuuksia on tutkittu, kuten saavuttamattomia ja mitattavia kardinaaleja. Nämä ominaisuudet yleensä edellyttävät, että kardinaaliluku on hyvin suuri, jolloin sellaisen kardinaaliluvun olemassaoloa ei voida todistaa Zermelo-Fraenkelin aksioomeilla.
Joukko-opillinen topologia käsittelee sellaisia yleisen topologian kysymyksiä, jotka ovat luonteeltaan joukko-opillisia ja joiden ratkaiseminen edellyttää kehittyneempiä joukko-opin menetelmiä. Monet sellaiset teoreemat ovat ZFC:stä riippumattomia ja edellyttävät vahvempia aksioomeja, jotta ne voidaan todistaa. Tunnettu probleema on normaalin Mooren avaruuden kysymys, joka oli yleisessä topologiassa laajan tutkimusken kohteena. Normaalin Mooren avaruuden kysymys osoittautui lopulta riippumattomaksi ZFC:stä.
Joukko-opin keksimisestä lähtien jotkut matemaatikot ovat kiistäneet sen soveltuvan matematiikan perustaksi. Yleisin joukko-oppiin kohdistunut vastaväite, jonka Kronecker esitti jo sen varhaisvuosina, lähtee konstruktivistisesta näkemyksestä, jonka mukaan matematiikka liittyy laskemiseen. Jos tämä näkemys hyväksytään, äärettömien joukkojen käsittely sekä naiivissa että aksiomaattisessa joukko-opissa tuo matematiikkaan menetelmiä ja kohteita, jotka eivät edes periaatteessa ole laskettavissa.
Ludwig Wittgenstein hylkäsi joukko-opin. Hänen mukaansa joukko-oppi on väärässä, sillä se perustuu ”mielettömään” kuvitteelliseen symboliikkaan ja sisältää ”turmiollisia idiomeja”, ja hänen mukaansa on mieletöntä puhua ”kaikista luvuista”. Wittgensteinin näkemystä matematiikan perusteista arvosteli myöhemmin Georg Kreisel ja Paul Bernays, ja sitä tutki tarkemmin muun muassa Crispin Wright.
Kategoriateorian kehittäjät ovat esittäneet topos-teoriaa vaihtoehdoksi perinteiselle aksiomaattiselle joukko-opille. Topos-teoriassa voidaan esittää tälle teorialle useita vaihto­ehtoja kuten konstruktivismi, äärellinen joukko-oppi ja Turingin koneeseen liittyvä laskettava joukko-oppi.