← Nieuwste papers
💻 computer science

Constructing (Co)inductive Types via Large Sizes

Dit artikel stelt een consistente uitbreiding voor van intensionele type-theorie met een groot type van maten en parametrische kwantoren om zowel inductieve als co-inductieve types te construeren, waarmee de beperkingen van eerdere benaderingen en de inconsistentie van de huidige implementatie van geschaalde types in Agda worden overwonnen.

Oorspronkelijke auteurs: Bastiaan Laarakker, Daniël Otten, Benno van den Berg

Gepubliceerd 2026-05-01
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Bastiaan Laarakker, Daniël Otten, Benno van den Berg

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je voor dat je een enorme, zelfreferentiële bibliotheek van kennis bouwt. In deze bibliotheek kan elk boek (een "type") verwijzingen bevatten naar andere boeken, en soms verwijst een boek naar zichzelf. Om te voorkomen dat deze bibliotheek instort in chaos of oneindige lussen, heb je strikte regels nodig over hoe deze boeken geschreven en gelezen kunnen worden.

Dit artikel gaat over het ontwerpen van een betere set regels voor een specifiek soort bibliotheek genaamd een "Bewijshulp" (zoals Agda of Lean). Deze hulpmiddelen helpen wiskundigen en programmeurs om code te schrijven die gegarandeerd werkt en bewijzen die gegarandeerd waar zijn.

Hier is de uiteenzetting van de ideeën uit het artikel met behulp van eenvoudige analogieën:

1. Het Probleem: Het "Stopbord" versus de "Snelheidsmeter"

Momenteel gebruiken bewijshulpen een "Stopbord"-benadering (genaamd syntactische checks) om ervoor te zorgen dat programma's niet oneindig blijven draaien. Ze kijken naar de vorm van de code. Als een functie zichzelf aanroept, controleert de computer: "Heb je een kleiner stukje data doorgegeven aan de volgende aanroep?" Zo ja, dan is het veilig. Als de code complex is, kan de computer verward raken en zeggen: "Nee, ik kan niet bewijzen dat dit stopt," zelfs als het dat eigenlijk wel doet.

De Oplossing uit het Artikel: In plaats van naar de vorm van de code te kijken, stellen de auteurs voor om elk stukje data een grootte-label te geven (zoals een snelheidsmeter of een lengtemarkering).

  • Inductieve types (zoals een lijst met getallen) worden gemarkeerd met een "hoogte". Een recursieve functie moet altijd omlaag gaan in hoogte.
  • Co-inductieve types (zoals een oneindige stroom van data) worden gemarkeerd met een "diepte". Een recursieve functie moet altijd dieper gaan om productief te zijn.

2. Het Gebrek aan het Huidige Systeem: De "Magische Oneindigheid"

In het huidige systeem (Agda) is er een speciaal label genaamd Oneindigheid (\infty). Het zou de "grootst mogelijke grootte" moeten zijn die alles omvat.

  • De Analogie: Stel je een liniaal voor die aan het uiterste einde een markering heeft voor "Oneindigheid". Het probleem is dat de auteurs van dit artikel ontdekten dat als je deze liniaal probeert te gebruiken om dingen te meten, je per ongeluk kunt bewijzen dat "Oneindigheid kleiner is dan Oneindigheid". Dit breekt de wiskunde en maakt het hele systeem inconsistent (zoals een liniaal die zegt dat een meter korter is dan een meter).

3. De Nieuwe Aanpak: De "Parametrische Menigte"

De auteurs stellen een nieuwe manier voor om met deze groottes om te gaan zonder een enkel "Oneindigheid"-label te gebruiken. Ze introduceren twee speciale hulpmiddelen: Parametrische Existentiële (\exists) en Parametrische Universele (\forall) kwantoren.

Beschouw deze als twee verschillende manieren om naar een menigte mensen (de groottes) te kijken:

  • Het Inductieve Type (De "Existentiële" Menigte):

    • Het Idee: Een eindige boom (zoals een stamboom) heeft een specifieke hoogte, maar we hoeven niet te weten precies hoe hoog het is om het te gebruiken. We hoeven alleen maar te weten dat ergens een hoogtelimiet bestaat.
    • De Metafoor: Stel je voor dat je op zoek bent naar een specifieke persoon in een menigte. Je hoeft niet iedereen te zien; je hoeft alleen maar te weten dat er bestaat een persoon in de menigte die bij de beschrijving past. De "grootte" wordt abstract gehouden en verborgen. Je kunt niet naar het specifieke getal gluren; je weet alleen dat een limiet bestaat. Dit voorkomt het paradox "Oneindigheid is kleiner dan Oneindigheid".
  • Het Co-inductieve Type (De "Universele" Menigte):

    • Het Idee: Een oneindige stroom (zoals een live video-feed) kan voor elke hoeveelheid tijd worden waargenomen.
    • De Metafoor: Stel je voor dat je naar een toneelstuk kijkt. Om te zeggen dat het toneelstuk "oneindig" is, moet je het kunnen bekijken voor elke duur die je kiest. De "grootte" hier is een belofte dat de data standhoudt, hoe diep je ook kijkt.

4. De Magische Truc: Het Bouwen van de Bibliotheek

De auteurs tonen aan hoe ze deze complexe types (de bibliotheekboeken) kunnen bouwen met behulp van deze "menigte"-hulpmiddelen:

  1. Stap 1: Ze bouwen "benaderingen" van de types bij elke mogelijke grootte (zoals het bouwen van een model van een huis dat 30 cm hoog is, 60 cm hoog, etc.).
  2. Stap 2: Ze gebruiken het Existentiële hulpmiddel om alle "eindige hoogte"-benaderingen te bundelen tot één echt Inductief type.
  3. Stap 3: Ze gebruiken het Universele hulpmiddel om alle "oneindige diepte"-benaderingen te bundelen tot één echt Co-inductief type.

Waarom is dit beter?
Eerdere pogingen konden alleen "eindig vertakkende" bomen bouwen (zoals een stamboom waar iedereen een beperkt aantal kinderen heeft). Deze nieuwe methode kan oneindig vertakkende bomen bouwen (waar een knooppunt een oneindig aantal kinderen kan hebben), wat veel krachtiger en flexibeler is.

5. Het Bewijs: Het "Realistische" Model

Om te bewijzen dat hun nieuwe systeem de wiskunde niet breekt, bouwden ze een "Realiseerbaarheidsmodel".

  • De Analogie: Stel je een rechter in een rechtbank voor. De rechter neemt niet zomaar het woord van de advocaten voor waarheid; ze controleren het bewijs tegen een specifiek, zeer groot en zeer streng regelboek.
  • Het Regelboek: Ze interpreteerden hun "groottes" niet als eenvoudige getallen, maar als onaf telbare ordinalen (een concept uit geavanceerde wiskunde dat "groter" is dan de verzameling van alle natuurlijke getallen).
  • Het Resultaat: Door groottes te behandelen als deze enorme, onaftelbare getallen, bewezen ze dat hun "Parametrische" regels (het verbergen van de specifieke grootte) perfect werken. Het systeem is consistent, wat betekent dat het niet per ongeluk zal bewijzen dat "Oneindigheid kleiner is dan Oneindigheid".

Samenvatting

Het artikel lost een bug op in huidige bewijshulpen waarbij een "magische oneindigheid"-label logische tegenstrijdigheden veroorzaakt. Ze vervangen dit door een systeem dat groottes behandelt als verborgen, abstracte limieten.

  • Voor eindige dingen: Ze zeggen: "Er is een of andere limiet, maar we kijken er niet naar."
  • Voor oneindige dingen: Ze zeggen: "Het werkt voor elke limiet die je kiest."

Dit stelt hen in staat om complexe, oneindige datastructuren veilig te construeren, waardoor de bewijshulp een betrouwbare tool blijft voor wiskunde en programmering.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →