overzicht   overview

Onderstaand artikel was aanvankelijk bedoeld voor lezers van een creationistisch tijdschrift: Weet Magazine. Maar het is daar nooit in gepubliceerd.

Is alles in de wiskunde een Verzameling?

Wanneer Rinus Kiel in een Logos artikel de suggestie doet dat er goede en minder goede wiskunde bestaat, dan heeft hij een punt. Inderdaad zijn er minstens twee soorten wiskunde, maar ik zou de scheidslijn niet trekken tussen QED (Quantum ElectroDynamics) en SED (Stochastic ElectroDynamics). Het kan veel eenvoudiger: er is een onderscheid tussen theoretische en praktische wiskunde.

Ho eens even! Wiskunde is toch wiskunde? Ja en nee. Om de zaken wat scherper te stellen. Denk bij "theoretische" wiskunde aan wat je op de middelbare school leert. En denk bij "praktische" wiskunde eerder aan computers, iPads, draagbare telefoons en dergelijke. Met enige overdrijving zou men kunnen zeggen dat de praktische wiskunde - meer bekend onder de naam "informatica" - zich heeft afgesplitst van de zuivere wiskunde. Dergelijke afscheidingen zijn in de wetenschap niet ongewoon. Destijds was de wiskunde een onderdeel van de filosofie. Nu echter zijn het gescheiden vakgebieden. Niemand die daar een probleem mee heeft.

Je zou het misschien niet verwachten, maar aan de hand van een paar voorbeelden zal ik proberen duidelijk te maken dat de twee verschillende invalshoeken - zuivere wiskunde versus informatica - leiden zal tot verschillende resultaten. Waarschuwing vooraf. Welke wiskunde dan ook is altijd heel precies en hangt sterk op details. Dit artikel zo maar even doorlezen betekent dus dat je volledig naast de inhoud zult grijpen. Aanbevolen wordt om alles eigenhandig te controleren en eventueel internet te gebruiken om je kennis aan te vullen. Wiskundekennis op middelbare school niveau (zeg HAVO) zou voldoende moeten zijn om het onderstaande te kunnen snappen.

VERZAMELINGENLEER

In de programmeertaal (Delphi) Pascal is een verzameling ("set") type geïmplementeerd, als een patroon van bits ("bitarray") in computergeheugen. Hierbij komt ieder element van de verzameling overeen met een bit dat op "1" is gezet. Een element dat overeenkomt met "0" zit niet in de verzameling. Uiteraard zijn verzamelingen in een computer eindig, om de simpele reden dat een computergeheugen wel groot kan zijn maar niet onbeperkt. Dit is een eerste verschil tussen de theoretische en de praktische verzamelingenleer. In Delphi Pascal kunnen set types hoogstens 256 elementen bevatten. De elementen van een verzameling komen overeen met bytes (van 8 bits elk). Op deze manier is $2^8$ = 256 bits = met 32 bytes maximaal de grootste verzameling in Pascal. Deze specifieke beperkingen zijn typisch voor de programmeertaal en zijn voor het betoog verder niet essentieel.

Voorbeeld. Beschouw het volgende bitpatroon: 1010011010 , waarbij de bits in het patroon genummerd zijn van rechts naar links en deze nummering begint bij 0. Neem verder aan dat verder alle bits aan de linkerkant nul zijn. Dan kunnen we de bijbehorende verzameling weergeven als { 9 7 4 3 1 } , of { 1 3 4 7 9 } , of { 1 7 3 4 9 } ; de volgorde van de elementen in een verzameling doet er namelijk niet toe.

Afgezien van de eindigheid van verzamelingen in een computer, zijn er andere verschillen met de theoretische verzamelingenleer Wel degelijk! Om dit in te zien moeten we ons realiseren dat bitpatronen in een computer niet alleen dienen voor het weergeven van verzamelingen, maar voor de weergave van alles en nog wat: video's, foto's, teksten, getallen, om maar een paar dingen te noemen.

Echter laten we ons in het vervolg beperken tot de binaire weergave van natuurlijke getallen. Het volgende rijtje komt menigeen wellicht bekend voor.
Decimaal = binair: 0 = 0 , 1 = 1 , 2 = 10 , 3 = 11 , 4 = 100 , 5 = 101 , 6 = 110 , 7 = 111 , 8 = 1000 , 9 = 1001 enzovoort.
Het bitpatroon behorende bij de verzameling { 9 7 4 3 1 } uit het voorbeeld is 1010011010 en komt overeen met het volgende getal: $2^1 + 2^3 + 2^4 + 2^7 + 2^9 = 2 + 8 + 16 + 128 + 512 = 666$ .
Omgekeerd kan men de getallen in de verzameling { 9 7 4 3 1 } omzetten in nog weer andere verzamelingen, via het binaire patroon.
Als volgt: 9 = 1001 = { 3 0 } , 7 = 0111 = { 2 1 0 } , 4 = 0100 = { 2 } , 3 = 0011 = { 1 0 } , 1 = 0001 = { 0 } . En vervolgens: 2 = 0010 = { 1 } , 0 = 0000 = { } .
Let op! De laatste verzameling bevat helemaal geen elementen meer en staat bekend als de lege verzameling.
Vullen we dit alles in bij onze voorbeeld verzameling, dan vinden we in een paar stappen het volgende. Goed opletten, want het wordt al snel onleesbaar! Als je een computer hebt met Microsoft Windows, dan kun je bijvoorbeeld knippen en plakken met Kladblok, om geen fouten te maken bij het invullen.
666 = { 9 7 4 3 1 } =
{ { 3 0 } { 2 1 0 } { 2 } { 1 0 } { 0 } } =
{ { { 1 0 } { } } { { 1 } { 0 } { } } { { 1 } } { { 0 } { } } { { } } } =
{ { { { 0 } { } } { } } { { { 0 } } { { } } { } } { { { 0 } } } { { { } } { } } { { } } } =
{ { { { { } } { } } { } } { { { { } } } { { } } { } } { { { { } } } } { { { } } { } } { { } } } . Verder kunnen we niet gaan.
Op deze manier kan men ieder natuurlijk getal laten overeenkomen met een verzameling die uitsluitend bestaat uit verzamelingen, om precies te zijn: uit lege verzamelingen. Omdat nu zowel onze natuurlijke getallen als onze computer verzamelingen overeenkomen met dezelfde bitpatronen kunnen ze niet wezenlijk van elkaar worden onderscheiden. Getallen en verzamelingen zijn dus binnen dit stukje informatica - praktische wiskunde - gelijkwaardig, het zijn twee verschijningsvormen van een en hetzelfde. Maar dat wisten we eigenlijk al.

Hoe anders is dit bij de theoretische verzamelingenleer! Een gebruikelijke manier om daar natuurlijke getallen te definiëren zijn de zogenaamde von Neumann ordinaalgetallen. Deze werken als volgt. Neem iedere keer de getallen die je al hebt, maak er een verzameling van en ken deze verzameling telkens toe aan het volgende getal. Begin met de lege verzameling. Dan krijgen we:
0 = { } , 1 = { 0 } , 2 = { 1 0 } , 3 = { 2 1 0 } , 4 = { 3 2 1 0 } , 5 = { 4 3 2 1 0 } , enzovoort.
We doen dit nog een keer, maar dan met de von Neumann getallen aan de linkerkant en de getallen volgens de informatica methode aan de rechterkant. Vergelijkt men nu de "theoretische" getallen links met de "praktische" getallen rechts dan is al na een paar stappen duidelijk dat we met totaal verschillende opvattingen te maken hebben. Misschien weer knippen en plakken met Kladblok, om geen fouten te maken bij het invullen:

wiskundeverzamelinginformatica
0 = { } = 0
1 = { 0 } = { { } } = { 0 } = 1
2 = { 1 0 } = { { { } } { } } = { 1 0 } = 3
3 = { 2 1 0 } = { { { { } } { } } { { } } { } } = { 3 1 0 } = 11
4 = { 3 2 1 0 } = { { { { { } } { } } { { } } { } } { { { } } { } } { { } } { } } = { 11 3 1 0 } = 2059

We houden hier op, omdat het volgende von Neumann getal al zo groot wordt dat het niet meer op een regel past. Je hoeft niet diep na te denken om in te zien dat er in de theoretische opvatting van de verzamelingenleer dus veel meer verzamelingen bestaan dan dat er natuurlijke getallen zijn. Dit zien we gemakkelijker als nu links de informatica getallen worden gezet en we kijken of dat rechts overeenkomt met een getal volgens standaard theoretische wiskunde.
Even terzijde. De aanbeveling om alles eigenhandig te controleren wordt nu zelfs voor schrijver dezes wel wat veel gevraagd. Daarom heb ik twee apps geschreven die de omzetting van verzameling naar getal en van getal naar verzameling geheel automatisch voor ons doen: set2num en num2set. Voorbeeld van een toepassing - spaties zijn niet toegestaan - volgorde van de elementen doet niet ter zake:

C:\Users\Han\Desktop\ZERMELO>set2num {{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}
2059

C:\Users\Han\Desktop\ZERMELO>num2set 2059
{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}
Dit zal het allemaal en stuk gemakkelijker maken. Gaan we weer, maar nu precies andersom als daarnet.

informaticaverzamelingwiskunde
0 = 00000 = { } = {} = 0
1 = 00001 = { 0 } = {{}} = { 0 } = 1
2 = 00010 = { 1 } = {{{}}} = geen
3 = 00011 = { 1 0 } = {{}{{}}} = { 0 1 } = 2
4 = 00100 = { 2 } = {{{{}}}} = geen
5 = 00101 = { 2 0 } = {{}{{{}}}} = geen
6 = 00110 = { 2 1 } = {{{}}{{{}}}} = geen
7 = 00111 = { 2 1 0 } = {{}{{}}{{{}}}} = geen
8 = 01000 = { 3 } = {{{}{{}}}} = geen
9 = 01001 = { 3 0 } = {{}{{}{{}}}} = geen
10 = 01010 = { 3 1 } = {{{}}{{}{{}}}} = geen
11 = 01011 = { 3 1 0 } = {{}{{}}{{}{{}}}} = { 0 1 2 } = 3
12 = 01110 = { 3 2 1 } = {{{{}}}{{}{{}}}} = geen

Enzovoort. Getallen en verzamelingen zijn hier niet gelijkwaardig. Verzamelingen zijn in de theoretische opvatting veel algemener dan getallen. Getallen maken volgens de theoretici maar een klein deel uit van alle verzamelingen. Dit past volledig in de filosofie van sommigen dat Alles in de wiskunde een Verzameling is - maar lang niet alles in de wiskunde is een getal. Het is klip en klaar dat ons stukje informatica hier iets anders laat zien dan de zuivere wiskunde. Dit leidt tot de volgende boude bewering.

Met andere woorden: het klopt gewoon niet. Immers $2 \ne 3$ , $3 \ne 11$ en $11 \ne 2059$ .
Wel typisch trouwens dat degene die bedacht heeft dat een natuurlijk getal de verzameling zou zijn van alle vorige natuurlijke getallen tevens de bedenker is van de Von Neumann-architectuur; dat is de blauwdruk die ten grondslag ligt aan de bouw van onze hedendaagse computers.
De moderne informatica heeft ons inmiddels de technologie van een superbeschaving aangereikt. Door toedoen van de theoretische wiskunde is deze ontwikkeling destijds in gang gezet, maar men hinkt daar zelf nog steeds op heel andere gedachten. Oudere gedachten, om precies te zijn.

Supermarkt paradigma

Waarom is dit alles zo belangrijk? Er zijn wiskundigen die beweren dat wiskunde onafhankelijk is van de maatschappij, onafhankelijk ook van enig geloof. Zodoende kon men met de Pioneer 10 een gouden plaat meesturen in de veronderstelling dat buitenaardse wezens over een soortgelijke - wiskundige - intelligentie beschikken als de mensen op aarde. Maar is onze wiskunde wel zo universeel? Roept de uitspraak "Alles is een verzameling" niet eerder het beeld op van .. een goed voorziene supermarkt? De verzamelingenleer wordt door mij wel gekscherend het supermarkt paradigma genoemd. Om aldus de beperktheid van deze zienswijze aan de kaak te stellen. De allereerste zin in hoofdstuk 1 van "Het Kapitaal" van Karl Marx luidt als volgt: De rijkdom van de maatschappijen, waarin de kapitalistische productiewijze heerst, heeft de vorm van een ‘kolossale opeenhoping van waren’, Het boek is geschreven in 1867. Omstreeks dezelfde tijd bedacht Georg Cantor zijn Verzamelingenleer. Is dit toevallig? Of is het ons beperkte menselijke verstand dat de stoffelijkheid die ons omringt op de voet volgt?

Maar vooruit. Stel dat Alles inderdaad een Verzameling is. Opgevat in termen van de praktische wiskunde betekent dit nog iets anders. Verzamelingen hebben hoe dan ook te maken met bitpatronen, die zijn opgeslagen in computergeheugens. Wanneer alles een verzameling zou zijn dan zouden we technologisch gesproken te maken hebben met computers die die uitsluitend bestaan uit geheugen. Maar is dit niet in strijd met de werkelijkheid? Immers naast geheugen bevatten computers ook nog zoiets als een processor. Processoren zorgen ervoor dat een computer "leeft", dat bitpatronen kunnen veranderen. Een werkende processor is als het ware de "geest" van een computer. Maar de geest is geen verzameling. Een zuivere wiskunde met als credo "Alles is een verzameling" geeft zodoende geen antwoord op de belangrijke vraag hoe iets (in de tijd) kan veranderen. En nog minder hoe iets kan ontstaan (booten heet dat in computertermen). Zoiets abstracts als de de vraag of alles in de wiskunde een verzameling is zou wel eens raakvlakken zou kunnen hebben met heel andere, spirituele zaken.