Getallen tellen – over automatiseren

De stelling die ik hier wil voorleggen is dat het tellen van de getallen de eerste ‘cognitieve’ activiteit is waarin het kind leert – door te doen – wat automatiseren betekent. Deze vaardigheid vooronderstelt het snappen van het cijfertaalsysteem (bij ons het tientallig cijfersysteem) en de bereidheid zich slaafs neer te leggen bij de opdracht de getallen te tellen.

Uit het inzicht dat er geen einde komt aan de uitvoering van deze opdracht en dat je op elk zelf gekozen moment kan stoppen maar ook door kan tellen, blijkt dat de mens reeds als kind ‘boven’ dit proces van automatiseren staat. De mens is zowel in staat zich mechanisch te gedragen en slaafs regels te volgen, maar tegelijk is hij daarin altijd meer dan een machine die werkt in opdracht van een programma.

(Goossens et al. 2021) wijzen er terecht op dat wanneer het om de toepassing van algemene regels in concrete gevallen gaat er een wisselwerking is tussen de regel en de situatie. “Dat wat we ‘toepassing’ noemen, raakt ook de toegepaste regel”.(Goossens, J., Hirsch Ballin, E., van Vugt, E. (2021), p.6).

De toepassing van een regel in de praktijk is iets anders dan het toepassen van een wiskundige functie op een argument, zoals een machine dat doet.

Datgene waardoor de praktijk functioneert, ligt als het ware op een dieper niveau, dat steeds wezenlijk impliciet blijft.” en “Ons expliciete weten is het topje van de ijsberg. In de omvang van deze laatste vergissen wij, slachtoffers van het rationalisme, ons dan ook deerlijk.” Zo schrijft Louk Fleischhacker in De Henide als Paradigma.

Verder zal blijken dat leven voor het verstand onbegrijpelijk is en niet verklaard kan worden als uitvoering van een programma.

Lilly’s vraag

Kleindochter Lilly is nog geen zeven jaren jong wanneer ze mij met trots demonstreert hoe goed ze al kan tellen. Terwijl de jongste van amper twee het rijtje namen van de getallen van 1 tot 10 kan opzeggen, is bij Lilly het kwartje gevallen. Ze heeft het systeem in onze naamgeving voor de getallen ontdekt: van negentien, twintig, éénentwintig, twee-en-twintig, drie-en-twintig, …, gaat ze naar dertig, één-en-dertig, twee-en-dertig. En zo verder gaat ze. “Knap hoor”, onderbreek ik haar demonstratie.

En dan vraagt ze: “Opa, hoeveel getallen zijn er?” Als kleinkind kun je alles aan opa vragen. “Daar moet ik even over nadenken”, zeg ik. Ze heeft geen tijd om op het antwoord te wachten. Ze rent al weer naar buiten om met haar broertje verstoppertje te spelen.

Ze liet me enigszins verbaasd achter. Dat in een kind dat pas komt kijken zo’n vraag opkomt! Immers, hoeveel eeuwen heeft de mens er niet over gedaan voor dat hij de getallen als een soort van zelfstandige objecten lost trok van de dingen in zijn omgeving? Een omgeving waarin hij eenheden en verschillende veelheden onderscheidde en van verschillende namen voorzag.

Plato wees ons er reeds op dat getallen geen zintuiglijk waarneembare objecten zijn zoals stenen en stoelen. Het zijn ideële objecten, ‘gedachtedingen’. Waarna Aristoteles zich afvroeg wat de mathematische objecten dan met de waarneembare werkelijkheid te maken hebben. En hoeveel eeuwen heeft het vervolgens niet geduurd voordat er een notatiesysteem werd ingevoerd voor de getallen. Ons tientallig positionele ‘plaatswaardestelsel’ is pas sinds de late Middeleeuwen in West-Europa in gebruik.

De Engelse medicus en filosoof John Locke (1632-1704) schreef in een reisverslag:
Sommige Amerikanen die ik sprak (en die waren echt niet gek) konden niet, zoals wij, tot 1000 tellen. Ze hadden geen enkel benul van dat getal.” (mijn vertaling)

Locke had het niet over de grondleggers van de Verenigde Staten van Amerika,
maar over de Tououpinambos, een volk dat diep in de Braziliaanse jungle leefde. Hun taal kende alleen de telwoorden voor de getallen van 1 tot en met 5. Kennelijk hadden ze geen behoefte aan meer dan deze vijf.  (Bron: Rochel Gelman and Brian Butterworth, 2005).

“Hoeveel getallen zijn er?” Om het antwoord te vinden moet je getallen tellen. Maar wat is dat voor merkwaardig gedoe? Er nog eens over nadenkend moest ik terug denken aan het onderzoek dat ik deed voor mijn afstuderen bij de afdeling wiskunde en informatica van de toenmalige Technische Hogeschool Twente. Dat ging over de relatie tussen wiskundig denken en automatisering.

Ik realiseer me nu dat het begrip tellen en de toepassing ervan in het tellen van getallen alle aspecten van het historische proces dat tot de programmeerbare machines heeft geleid al in zich bevat. Wat kinderen al vroeg leren is automatiseren. En dat begint met tellen. Hoe zit dat precies?

Tellen: basale vorm van mathematiseren

Het tellen van dingen om het aantal te bepalen is de eerste en meest basale vorm van mathematiseren, een bijzondere manier van kennend en handelend omgaan met de werkelijkheid. Tellen is niet, zoals sommige mensen schijnen te denken een vorm van rekenen. Het is een eenvoudige vorm van meten. Het resultaat is informatie: het aantal van gegeven dingen wordt bepaald: er staan drie paarden in de wei.

Volgens mijn afstudeerdocent de logicus en filosoof Louk Fleischhacker zijn onverschilligheid en afstandelijkheid de termen die horen bij de mathematiserende kenhouding. Het is een in onze cultuur zeer overheersende denkwijze die zeer succesvol is in wetenschap en techniek. Ik denk dat het goed is om de eigen aard van deze denkhouding en daarmee de typische wijze waarop de werkelijkheid voor deze houding verschijnt te begrijpen. Alleen zo kunnen we er vrij mee omgaan. Wat is het karakter van dit denken?

“It is a characteristic of mathematical thinking that it relates itself to something external to the subject performing it. That means that it regards the distinctions it creates as indifferent with respect to the unity of its object as well as with respect to its own doings. They are distinctions in thought only.” (Fleischhacker, 1995, p. 128).

Je kunt een appel in gedachten in tweeën delen. Die appel wordt er niet anders van.

Laten we even stilstaan bij het tellen, de ons meest bekende vorm van mathematiseren, om te begrijpen wat deze woorden betekenen. Zodra het kind het cijfertaalsysteem heeft ontdekt, wordt het tellen iets automatisch, een mechanisch gebeuren dat zich als het ware buiten het denkend subject voltrekt. De inhoud staat als het ware buiten het denkproces van het subject, dat eigenlijk helemaal niet van hem of haar is. En zo is het ook in de intelligente logisch denkende machines. Deze vooronderstellen het mathematiseren van het denken (mathematische logica) en het uitdrukken van logische denkregels in een eenzinnige taal waarmee de machine rekent. De kunstmatige intelligente machine is de fysische realisatie van het denken als een door regels gestuurde activiteit waarbij de formele regels uitwendig zijn aan de inhoud ervan. Ook machines die niet redeneren volgens logische regels maar op basis van statistieken die uit gegevens worden gehaald (machine learning) trekken conclusies door toepassing van een programma dat regelt hoe een conclusie getrokken moet worden.

Het tellen als bron van het automatische rekenen

Wat zijn de vooronderstellingen waar de werkelijkheid aan moet voldoen opdat ze door ons geteld kan worden? Ze moet als telbaar voor ons verschijnen. Er moeten eenheden, dingen, onderscheiden worden. Meerdere goed onderscheidbare eenheden. Wanneer we die verschillende dingen tellen vatten we ze op als eenheden van hetzelfde. De waarneembare eigenschappen waarin de dingen van elkaar verschillen doen er voor het tellen niet toe. We staan daar volstrekt onverschillig tegenover. Aristoteles merkt dan ook op dat we weliswaar waarneembare dingen tellen, maar het gaat niet om de dingen als waarneembaar. Het zijn allemaal onderscheidbare dingen: allemaal dieren, allemaal paarden. Die watheid van de door ons getelde eenheden, maakt de continuïteit uit, het ene dat de veelheid van telbare dingen, objecten, uitmaakt en verbindt.

In abstracto, is de onderscheidbaarheid (van de dingen) al de eenheid van de onderscheiden dingen. Hun kwaliteit (paard of knoop zijn) doet er niet toe voor de telbaarheid. (De geïnteresseerde lezer raad ik aan Hegels Wissenschaft der Logik te lezen. Geen eenvoudige kost, maar het loont de moeite.)

Verder moeten we onthouden wat we al geteld hebben. We moeten geen dingen dubbel tellen. Zonder geheugen is er geen telproces. We geven de dingen allemaal een eigen, bekende, naam. De ‘cijfernamen’: 1,2,3,…Het doet er niet toe welk ding we welke naam geven, als we ze maar allemaal een unieke naam geven. Die naam wordt door de volgorde van tellen voorgeschreven door het afgesproken systeem, de cijfertaal. Ieder cijfer verwijst impliciet naar zowel voorganger (en heeft dus geheugen) als naar de opvolger (en zegt dus hoe verder te tellen).

De namen van de cijfertaal en hun volgorde die we gebruiken bij het tellen, hebben we geleerd, zoals elk taal geleerd moet worden. Mijn kleindochter Lilly snapte het systeem van die taal en ontdekte dat ze alsmaar door kon tellen.

Dit snappen van de regelmaat vind ik iets wonderlijks. Het bestaat in het tonen van de vaardigheid in het uitvoeren van het tellen. Vergelijkbaar met traplopen. Wie kan traplopen kan alle trappen oplopen. Dit snappen is echter anders dan het snappen wat een woord betekent. Een kind dat plotseling voor het eerst het woord ‘draaien’ gebruikt wanneer het met de neus tegen het ruit van de rijdende trein naar buiten kijkt naar een punt in de verte, geeft er blijk van iets te snappen. Het landschap lijkt dan inderdaad voorbij te draaien. Het kind heeft ooit situaties gezien waarin het woord ‘draaien’ (door anderen, ouders misschien) gebruikt werd. Maar het nieuwe eigen gebruik ervan toont dat ze snapt wat het betekent. Dat is begrip.

Het snappen dat voor het tellen nodig is, is het zien van een expliciete regelmaat. Die regelmaat zit ook wel in het herkennen van situaties waarin er sprake is van ‘draaien’ of ‘stoel’, of ‘spel’, of welk woord ook. (Lees: Ludwig Wittgenstein, Filosofische Onderzoekingen)

De werkelijkheid biedt het stopcriterium voor het tellen. Het getelde aantal dingen drukken we uit in het laatste cijfer dat we gebruikten bij het tellen. Zo onthouden we het aantal getelde dingen en we kunnen dit aantal meedelen aan anderen. Het resultaat van deze meting: “Er staan drie paarden in de wei”. Dit resultaat, het aantal, is onafhankelijk van de specifieke volgorde waarin de dingen geteld zijn.

In de wiskunde doet het voor de inhoud van een resultaat, een stelling of som, er niet toe hoe je de stelling bewijst of de som berekent. Het is een ‘uitwendig’ gedoe, zoals Hegel opmerkt in de Inleiding van zijn Fenomenologie van de Geest. Of de kinderen ‘kolomsgewijs’ van rechts naar links of van links naar rechts leren optellen is een onderwijskundige kwestie want voor het resultaat van de optelling is het om het even.

We zien de vele eenheden die we tellen als elementen van een geheel, een nieuwe eenheid: een verzameling paarden. Elementen van een verzameling is abstracter dan individuen of leden van een groep of samenleving. Als elementen opgevat staan de dingen volstrekt buiten elkaar: ze hebben niets met de verzameling. Die is immers van buiten af door ons opgelegd. Tijdens het tellen, deze abstracte activiteit, is de werkelijkheid bevroren, onveranderlijk.

Natuurlijk is het opvatten van de leden van een groep als elementen van een telbare verzameling een abstractie. De leden van een groep hebben wel iets met elkaar. Ze verhouden zich niet alleen tot elkaar als teamgenoten of klasgenoten of als leden van een familie, maar ook tot de groep als groep. Bij het tellen abstraheren we van deze inhouden.

We vertrouwen op de onmiddellijke waarneming van de onderscheiden dingen die we telden. Deze waarneming is in het begin een sterk fysieke activiteit. Het kind raakt de dingen nog één voor één aan terwijl het telt: dit, dit, dit. Aanwijzen is een vorm van meten: dit object hier, die steen daar. We positioneren het aangewezen object. Het aanraken is het houvast van het waarnemen. We positioneren het object ten opzicht van ons lichaam in de fysieke ruimte die we ermee delen.

Waar komen de cijfernamen vandaan?

In de namen, de woorden voor de dingen, zit de historische bepaaldheid van ons denken in het algemeen en het tellen in het bijzonder. Ooit moet de mens het woord ‘leeuw’ bedacht hebben om naar een leeuw te verwijzen. Het woord kan in de plaats komen van het levende dier. We hoeven ons het dier niet eens meer voor te stellen als we het woord gebruiken.

Ooit moeten mensen de namen voor de getallen gemaakt hebben. Het heeft even geduurd voordat de abstracte getalsnamen los kwamen van de namen van de getelde dingen zelf. Sommige talen kennen nog verschillende woorden voor één en voor twee van hetzelfde. Bijvoorbeeld Grieks: anèr, man; andre; twee mannen. (Struik, 1977, p. 13) . Geleidelijk ontstaan cijfernaamsystemen. Struik geeft een voorbeeld uit het Kamilaroi, een taal van een Australische stam: 1 = mal, 2 = bulan, 3 = guliba, 4 = bulan-bulan, 5 = bulan-guliba, 6 = guliba-guliba (Uit: Conant, The number concept, blz. 106-107.)

Een belangrijke stap wordt gemaakt met de invoering van het positionele systeem. Rond 300 voor Christus werden in India getallen in het Brahmi-systeem geschreven. Dit systeem had nog speciale tekens voor het getallen 10 (zeg A) en 100 (zeg B). De positie van de tekens in een rijtje heeft geen betekenis voor de waarde die het rijtje aanduidt. AAB3 duidt bijvoorbeeld hetzelfde aan als BA3A, namelijk ons getal 123. Het Brahmi-systeem is dus geen positiestelsel. Ongeveer 500 na Christus werd in India het cijfer 0 ingevoerd in het Brami en werd het een positioneel systeem (Hogendijk 1990). De 0 verving een lege plek of een punt in een positioneel notatiesysteem, een getalsysteem waarin de positie van het cijfer de waarde bepaalt, zoals in ons tientallig getalsysteem (203 is de naam van een ander getal dan 230 of 23), dat in de veertiende eeuw in West-Europa haar intrede deed. Het Romeinse systeem is enkele eeuwen ouder.

Het getal 0 kent nog een heel andere historie. Men kan zich voorstellen dat het enige tijd gekost heeft voordat men het getal 0 bedacht. Daarvoor moeten de wiskundige objecten immers los gedacht worden van de waarneembare, fysieke, objecten. Wie telt nou 0 objecten? Hoe kun je nul streepjes onderscheiden en optekenen, als je als afbeelding voor een aantal voor elk geteld element een streepje zet (IIII)? Wanneer het teken 0, mogelijk afkomstig van het Griekse woord ‘oudèn’ dat niets betekent, werd ingevoerd is onduidelijk (Butterworth 1999).

Zo ontstaat het getalbegrip met de ontwikkeling van een eigen cijfertaal, de taal waarmee de individuele getallen als abstracte denkinhouden worden onderscheiden. Zonder de wiskundige objecten een eigen naam te geven (een identifier) kunnen we ze niet onderscheiden, er niet over denken en niet mee redeneren. De wiskundige heeft het over de driehoek D, de lijn l, de getallen x en y, etcetera.

De cijfertaal, zoals ons tientallig stelsel, is zelf een structuur. Zonder dat is het mechaniseren en automatiseren van het rekenen niet mogelijk. De organisatie van het telraam, het rekenmechaniek, reflecteert deze structuur. Het telraam is heel duidelijk een materialisatie van het positionele systeem. Voor elke positie is er een aparte stang met bolletjes.

We zien dat bij het tellen van dingen er een afbeelding plaats vindt van de dingen op de ideële werkelijkheid van de getallen waardoor de werkelijkheid geordend wordt. De fysicus Heinrich Hertz drukte in het voorwoord van zijn Prinzipien der Mechanik dit afbeeldingsbegrip in de mathematische fysica uit. Denkprocessen en processen in de werkelijkheid zijn elkaars afbeelding. Zoals de toestand van de bolletjes van de abacus een getal representeert en de rekenkundige bewerking door akties op het telraam worden gerepresenteert. Dit afbeeldingsbegrip zou een grote rol gaan spelen in het denken van de 20ste eeuw. Bijvoorbeeld in het denken van de filosoof Richard Avenarius die in een kritiek op Kant de tweedeling in denken en natuur ophief en via Otto Weininger (Geslacht en Karakter) en Ludwig Boltzmann (statistische thermodynamica) op Ludwig Wittgenstein (Tractatus Logico Philosophicus).

Zodra de getallen een eigen individueel bestaan hebben gekregen los van de zintuiglijk waarneembare werkelijkheid rijst de vraag hoeveel er van zijn. En of er ook een grootste getal is. Dit is de vraag die opkwam bij mijn kleindochter toen ze de regelmaat in ons getalnamensysteem zag en ontdekte dat ze alsmaar verder kon tellen. “Hoeveel getallen zijn er?”, vroeg ze.

De idee dat de getallen zelf te tellen zijn is een merkwaardig iets. Wat je telt zijn immers de door ons zelf gemaakte dingen (objectivaties) van abstracties die we gemaakt hebben voor het tellen van echte waarneembare dingen, zoals knoopjes of zandkorrels. De getallen zijn zelf telbare objecten geworden. Het getal is het getelde als telbaar. We hebben ze een volgorde gegeven, de volgorde die hun identiteit uitmaakt: vier is wat na drie en voor vijf komt. Met het getal 0 of 1 en de opvolger-relatie ligt het hele getal-systeem vast. De getallen schrijven vanwege hun identiteit als geordende getallen voor in welke volgorde we ze zullen tellen. De taal legt deze volgorde vast. We identificeren de getallen met hun unieke namen (‘identifiers’, de rigid designators van Saul Kripke) in het door ons gebruikte getalnamensysteem. Wanneer je de getallen telt dan volg je de ordening van de getalnamen. Je begint niet bij 23 te tellen en dan 45 en dan 321, of zo wat.

In het tellen van de getallen buigt het wiskundig denken zich op zichzelf terug: het werkt op het resultaat van zijn eigen ontwikkeling die bestond uit de creatie van de getallen als objectivatie van de abstractie van de werkelijkheid als telbaar. Deze zelfreflectie van het wiskundig denken zien we ook in de aanvang van de vorige eeuw in de meta-mathematica en de mathematische logica, de wiskundige formalisering van het wiskundig redeneren.

Het tellen van de getallen is een nutteloze bezigheid. Deze nutteloosheid komt tot uitdrukking in de oneindigheid ervan. Er is geen stopcriterium in de externe werkelijkheid die geteld wordt. Als er niets in de werkelijkheid is dat geteld wordt heeft tellen geen nut. Wiskunde zou geen enkel nut hebben als de werkelijkheid niet telbaar was, als de natuur niet berekenbaar was. Anderzijds, moeten we ons steeds realiseren dat dit abstracties zijn.

Meten is weten, maar er zijn aspecten in de werkelijkheid die niet in onze metingen tot uitdrukking komen, zoals emoties, betrokkenheid.

Soms is het handig de dingen zo geordend te denken dat we gebruik kunnen maken van de structuur van de getallen. Vier rijen van vijf huizen is totaal twintig huizen, omdat 4 keer 5 20 is. De zuivere rekenkunde biedt technieken voor het handiger tellen en voor het handiger rekenen in het algemeen. Zoals eerder opgemerkt, het resultaat, het aantal getelde objecten, is onafhankelijk van de methode van tellen en rekenen. Zoals de inhoud van de wiskundige stelling onafhankelijk is van de wijze van bewijzen. (En deze uitwendige relatie is typisch voor het wiskundig denken.)

We zien in het tellen reeds de begripsmatige kern van de automatisering. Het zijn de cijfers, de getalnamen, de identifiers, die voorschrijven hoe de getallen geteld worden. De taal die een wezenlijke rol speelt in de automatisering is de uitwendige vorm van het rekenend denken (de overheersing van deze vorm van denken werd door Heidegger als karaktertrek van onze westerse cultuur gezien). De taaltekens werken in de machine volgens de betekenis die ze voor ons hebben.

Het tellen van de telgetallen is een inhoudsloze beweging met een onbereikbaar doel, het vaststellen van het aantal dingen die zelf al tellend door het denken voortgebracht worden. De getallen tellen zichzelf. Het zijn de werkende tekens van onze rekenmachines.

Wanneer je een antwoord wilt hebben op Lilly’s vraag moet je de getallen tellen. Dat doe je met…getallen.

Het is een vreemde gedachte: dat getallen zichzelf zouden tellen. Maar we zien hier wat er gebeurt wanneer we proberen op een wiskundige manier de werking van een geprogrammeerde machine te begrijpen en te beschrijven. Zo’n machine bevat het voorschrift voor zijn eigen werking in de vorm van een in fysieke toestanden van de machine uitgedrukte code (het programma). We zeggen dat zo’n machine ‘vanzelf’ werkt. (Dat is iets anders dan ‘uit zichzelf’.) Het ‘zelf’ van de machine is het programma, het ontwerp dat de werking ervan beschrijft. Een werkende machine is ook een natuurproces. De machine is een samenwerking van mens en natuur. De mens heeft een voor hem zinvolle orde aangebracht aan de werking van de natuur.

De afstudeeropdracht

In 1979 studeerde ik af als wiskundig informaticus op een onderzoek op het gebied van de wiskundige semantiek van programmeertalen volgens de recursieve domein theorie van de logicus Dana Scott. Daarin verdedig ik de stelling dat de mathematische uitdrukking van het principe van de programmeerbare zichzelf reproducerende automaat de uitdrukking Z(Z) = Z(Z) is, waarbij Z = λx.x(x), de zelfapplicatie functie is (in termen van de lambda-calculus, een taal voor het rekenen met functies). Dit is overigens geen wiskundige stelling. Het is meer een stelling over de relatie tussen wiskunde en de automatisering van het rekenende denken.

Leibniz voerde de ‘functio’ in als een variabele die van een andere variabele afhangt. De wiskunde had er moeite mee en het heeft enige tijd geduurd voordat functies als eerste-klas wiskundige objecten werden beschouwd. De variabele is net als de functie al een probleem voor de wiskundige. Gottlob Frege worstelde ermee. Het is geen wiskundige object. De variabele staat voor de vrijheid van het stellende denken, dat een willekeurige naam (teken) geeft aan een bepaalbaar iets. Bijvoorbeeld, de variabele l die de lengte van een staaf voorstelt. Maar ook, een nog abstractere variabele x die een willekeurige nog onbepaald getal voorstelt, zonder enige fysische interpretatie.

Een functie is een variabele waarvan de waarde van een andere afhangt. Niet zoals de variabele van het stellend subject, maar van iets anders. De lengte l is functie van de temperatuur t. l = f(t).

In de mathematische natuurwetenschap gaan we er vanuit dat de natuur zich gedraagt volgens wetmatigheden die we in een systeem van wiskundige functies kunnen uitdrukken. Vanwege die aanname is deze experimentele wetenschap hypothetisch. We nemen aan dat er een functioneel verband is. We gaan door metingen bepalen hoe dat verband is.

Als verzameling is een functie een verzameling paren (a,b), waarbij a het origineel is dat afgebeeld wordt op b. Maar een functie is ook een regel volgens welke a op b wordt afgebeeld.

De lambda-calculus is een formele theorie van functies. De eerste versie werd door Alonzo Church ingevoerd om als basis te dienen voor de gehele wiskunde, als alternatief voor de axiomatische theorie van verzamelingen. In latere versies van deze calculus kunnen precies alle op een computer berekenbare functies gedefinieerd worden. (Er zijn ook functie die niet berekenbaar zijn. Daar heb je dus niet veel aan. ;-))

De lambda-calculus heeft twee basisoperaties. De eerste is de lambda-abstractie, waarmee een functie wordt gemaakt op basis van een expressie. Bijvoorbeeld λx. (x+1) is de functie die ieder object x afbeeldt op het object x+1. De tweede operatie is de functie-applicatie.

Bijvoorbeeld: als de functie t = λx. (x+1) dan is t toegepast op 2 : t(2) = λx. (x+1) (2) = 2+1 = 3.

Dus als Z de zelfapplicatie functie is: Z = λx. x(x), dan levert Z toegepast op Z zelf het volgende resultaat: Z(Z) = Z(Z) = Z(Z) = …

De zelfapplicatie functie toegepast op de zelfapplicatie functie zelf levert als resultaat deze zelfde zelfapplicatie weer op; een oneindig voortdurend proces van zelfreproductie. De zelfreproductie is de slinger van het onbelaste wrijvingsvrije slingeruurwerk dat zichzelf in stand houdt met het slingeren. Maar ook de teller die zichzelf reproduceert als teller in het telproces dat verloopt volgens de ordening van de getalnamen: … dertig, één-en dertig, twee-en-dertig, …Het tellen van de getallen geprogrammeerd door het notatiesysteem van de cijfers. Het is de machine die zichzelf in het werken in stand houdt.

Wat is de betekenis van een computerprogramma? Wel, de functie ervan is voor te schrijven hoe invoerwaarden moeten resulteren in uitvoerwaarden. Wiskundig gezien een functie die invoerwaarden afbeeldt op uitvoerwaarden. Een simpele opdracht als x := x +1 heeft als betekenis de functie t die bij de invoer 1 optelt: t = λx. (x+1). Bijvoorbeeld: t(2) = 2+1 = 3.

Dit simpele programma stopt na één enkele stap. Een wat serieuzer programma zorgt voor meerder stappen (eventueel ‘oneindig’ veel, zoals een besturingsprogramma) afhankelijk van de invoer ervan. Zo’n programma moet zichzelf weer aanroepen.

Welke functie hoort er bij een programma dat zichzelf meerder keren aanroept? Een voorbeeld.

De lengte van een lijst: een recursieve definitie

We kunnen precies definiëren wat we onder de lengte van een lijst verstaan. Voorbeeld van een lijst is een boodschappenlijst. Het is een opsomming van items. Een lijst is een type data-structuur. Bijvoorbeeld: [a,b,c,d] is een lijst met 4 elementen, waarvan a het eerste element is; ook wel de kop van de lijst genoemd. De lijst die je overhoudt wanneer je de kop eraf haalt heet de staart. We noteren: (a:[b,c,d]) om aan te geven dat a de kop is van de lijst [a,b,c,d]. De lege lijst noteren we als []. (a:xs) is de lijst met a op kop met er achter de lijst xs.

We kunnen nu definieren wat de lengte van een lijst is. Dat is het aantal elementen dat in de lijst staat:

lengte [] = 0 , de lengte van de lege lijst is 0

lengte (a: xs) = 1 + lengte (xs), oftewel de lengte van een niet-lege lijst is 1 + de lengte van de staart xs van de lijst.

Merk op dat de definitie circulair lijkt te zijn: het gedefinieerde komt rechts in de omschrijving voor. Dat is echter niet helemaal zo. De lengte wordt impliciet gedefinieerd door een recursieve definitie die zegt hoe de lengte van een bepaalde gegeven lijst uit die van een andere lijst (de tail ervan) kan worden berekend.

De lengte van een oneindige lijst is onbepaald. Het proces dat de lengte berekend komt niet tot een einde.

We kunnen de definitie van de lengte functie ook in één regel samenvatten:

F(xs) = als xs=[] dan 0 anders 1 + F(tail (xs)) (*)

Deze definities hebben de vorm van een rekenvoorschrift. Ze kunnen direct gebruikt worden om de waarde ervan voor een gegeven lijst te berekenen. Het zijn computer programma’s in een functionele taal (zoals Haskell of Miranda).

Programmeurs specificeren functies en data-structuren. De uitvoering van de recursieve opdracht houdt een herhaling in van dezelfde operatie op telkens een kortere lijst. Tot de overgebleven lijst leeg is. Dat is het stopcriterium. Volgens de wiskundige recursie theorie bestaat bij een dergelijke recursieve definitie altijd een functie die we als de betekenis van het programma kunnen opvatten. Deze functie kan expliciet gemaakt worden door middel van een zelfapplicatie van een hogere orde functie.

Die heeft de vorm: F (x) = G (G, x).

Waarbij:

G (f,xs) = als xs = [] dan 1 anders 1 + f(f, tail(xs))

De functie F is gedefinieerd door G die op zichzelf wordt toegepast. G is zelf ook gedefinieerd met behulp van zelfapplicatie, namelijk van zijn eerste argument, de functie f, hierboven gedefinieerd door (*).

Om de betekenis van een recursief programma op wiskundige wijze uit te drukken als een functie F die een invoer afbeeldt op een uitvoer, waarvoor we een rekenmachine gebruiken, moet deze functie gedefinieerd worden door middel van een zelfapplicatie van een zelfapplicatie.

In deze zelfapplicatie komt op wiskundige wijze tot uitdrukking dat de toestanden van een automaat zelf zorgen voor de toestandsovergangen die overeenkomen met de betekenis ervan. De zelfapplicatie als functie toegepast op zichzelf is de theoretische uitdrukking van de zichzelf reproducerende machine. Een machine is zodanig gemaakt dat deze niet alleen iets uitvoert, iets zinvols produceert, maar ook zichzelf reproduceert. Het blijft dezelfde machine die blijft werken.

In het tellen van de getallen herkennen we deze zelfapplicatie.

Zelfreproductie van de levende cel

Zelfreproductie is één van de meest belangrijke karakteristieke kenmerken van levende organismes. In (Andrade et al. 2011) claimen de auteurs dat dit idee wiskundig uitgedrukt kan worden in de zelf-refererende vergelijking f = f(f). Naar één van de oudste mythische symbolen, tonende een slang die zichzelf in de staart bijt, wordt deze de Ouroboros vergelijking genoemd.

De Ouroboros slang

De uitdrukking van de zichzelf reproducerende automaat door middel van een zelfapplicatie van een zelfapplicatie, formeel als Z(Z) waarbij Z = lambda x. x(x), (Op den Akker, 1983; Fleischhacker 1982) gaat een stap verder dan de Ouroboros vergelijking, de zelfapplicatie uitdrukking f(f) = f in (Andrade et al. 2011).

De uitdrukking Z(Z)=Z(Z) kan gezien worden als de dynamische tegenhanger van de Ouroboros vergelijking f(f) = f van (Andrade et.al.2011)

Vanwaar het verschil tussen beide gelijkheden? De levende cel is niet een realisatie van een expliciet in de cel uitgedrukt programma, zoals de automaat dat is. Bij de cel is dit hoogstens aanwezig doordat wij het erin zien. Bij de automaat verklaart het programma de werking van de machine. De machine is zo door ons gemaakt.

Het refereren naar een programma kan echter, zoals de biochemicus en filosoof Jacques Monod opmerkt, niet als wetenschappelijke verklaring dienen voor de zelfreproductie van de levende cel, zoals dat voor de geprogrammeerde automaat wel kan.

Tot slot: het antwoord op Lilly’s vraag

Er zijn oneindig veel getallen. Daar had ze waarschijnlijk al wel een vaag vermoeden van. Dat het tellen net zolang door kan gaan als ze zelf wil.

We noemen deze getallen natuurlijke getallen. Omdat je ze af kunt tellen noemen wiskundigen het aantal aftelbaar oneindig.

Zijn er nog andere soorten oneindig? Daarover zijn de meningen verdeeld. In de Middeleeuwen vroegen de geleerden hoeveel engelen er op de punt van een naald passen. Een moderne variant is: hoeveel punten er op een lijn liggen. Dat zijn er volgens sommigen meer dan aftelbaar oneindig veel. We moeten ze een unieke naam geven om ze uit elkaar te houden en om ze te kunnen tellen. Je kunt bewijzen dat er te weinig namen van gehele getallen zijn om ze allemaal een eigen unieke naam te geven. (Met de zogenaamde diagonaalmethode.)

Merk op dat wiskundige punten geen dikte of lengte hebben. Net als engelen. Een lijn is dan ook niet opgebouwd uit punten. Want een lijn heeft een lengte en een punt niet. Er is wel voorgesteld om andere ‘namen’ te gebruiken om punten aan te geven. Zoals bijvoorbeeld: ‘het aantal graankorrels in een hoop graan’. Of ‘het aantal haren op het hoofd van iemand die niet kaal is’. Dat zijn vage verwijzers. Ze wijzen niet precies een punt aan zoals een getal, maar alleen een vage locatie ten opzichte van een gegeven punt op een lijn.

Mensen verwarren vaak de exactheid van de wiskundige objecten, zoals getallen en meetkundige figuren, met de imperfectie van de toepassingen van de wiskunde, zoals bij het meten en het modelleren van de werkelijkheid.

De wiskunde schiet tekort om de veranderlijke werkelijkheid te beschrijven. Het kan alleen het onveranderlijke in de werkelijkheid beschrijven.

Bronnen

Brian Butterworth (1999). The mathematical brain. MacMillan, 1999.

Rieks op den Akker (1979). Zelfapplicatie en zelfregulatie. Doctoraalverslag Technische Hogeschool Twente, Onderafdeling Toegepaste Wiskunde, 1979.

Rieks op den Akker (1983). De zelfstandigheid van automaten en de semantiek van programmeertalen, Intern rapport Technische Hogeschool Twente, Onderafdeling Wijsbegeerte en Maatschappijwetenschappen (ook als intern rapport verschenen bij de Onderafdeling der Informatica). Dit is een bewerking van mijn afstudeerverslag verschenen bij de onderafdeling Informatica van de TH Twente (1979).

Jorge-Soto Andrade, Sebastian Jaramillo-Riveri, C. Gutiérrez & J. Letelier (2011). “Ouroboros avatars: A mathematical exploration of self-reference and metabolic closure.” ECAL (2011).

Louk Fleischhacker (1976). Wijsbegeerte van het wiskundig denken. Syllabus van het collegejaar 1975/76. Technische Hogeschool Twente, Onderafdeling der Wijsbegeerte en Maatschappijwetenschappen, 1976.

Louk Fleischhacker (1982). Over de grenzen van de kwantiteit. Proefschrift Universiteit van Amsterdam, 1982.

Louk Fleischhacker (1995). Beyond structure; the power and limitations of mathematical thought in common sense, science and philosophy. Peter Lang Europäischer Verlag der Wissenschaften, Frankfurt am Main, 1995.

Louk E. Fleischhacker (1999). `De Henide als Paradigma. Otto Weiningers invloed op Ludwig Wittgenstein’ in: De Uil van Minerva 15 nr. 3 (Lente 1999).

Rochel Gelman and Brian Butterworth (2005) Number and language: how are they related?, Trends in Cognitive Sciences, Volume 9, Issue 1, 2005, Pages 6-10.

Goossens, J., Hirsch Ballin, E., van Vugt, E. (2021). Algoritmische beslisregels vanuit constitutioneel oogpunt: Tweedeling tussen algemene regels en concrete toepassing onder druk. Tijdschrift voor constitutioneel recht12(1), 4-19.

J.P. Hogendijk (1990). Over de geschiedenis van de cijfers. Tijdschrift voor Nederlands Wiskunde Onderwijs, december 1990.

D.J. Struik (1977). Geschiedenis van de wiskunde. SUA, Amsterdam, 1977.

Published by

admin

Rieks op den Akker was onderzoeker en docent kunstmatige intelligentie, wiskunde en informatica aan de Universiteit Twente. Hij is gepensioneerd.

Leave a Reply