Skip to content

Een proof-of-concept voor het omzetten van Nederlandse wetgeving naar machine-leesbare specificaties

Notifications You must be signed in to change notification settings

MinBZK/poc-machine-law

Repository files navigation

🤖 Machine-leesbare Wetgeving

Een proof-of-concept voor het omzetten van Nederlandse wetgeving naar machine-leesbare specificaties

💡 Motivatie

Veel Nederlandse wetten zijn in essentie mechanische processen. Dit wordt duidelijk uit deze drie voorbeelden:

1. AOW-opbouw (Pensioenberekening)

→ Algemene Ouderdomswet, Artikel 13, lid 1-3

1. De oppbouw van het ouderdomspensioen vindt plaats over een tijdvak van 50 jaren.
2. Voor elk jaar wordt 2 percent van het ouderdomspensioen opgebouwd.
3. Bij een korter tijdvak dan 50 jaren wordt het ouderdomspensioen evenredig verlaagd.

Wat maakt dit mechanisch? Dit is een pure rekenkundige formule: uitkering = basispensioen × (opbouwjaren ÷ 50) × 0.02. Elke variabele is exact gedefinieerd en de berekening is deterministisch.

2. Huurtoeslag (Inkomensafhankelijke normhuur)

→ Wet op de Huurtoeslag, Artikel 19, lid 2-3

Voor elk rekeninkomen boven het minimum-inkomenspunt geldt de formule:
(a x Y²) + (b x Y)

waarbij:
Y = het rekeninkomen
a, b = factoren per type huishouden, vast te stellen bij ministeriële regeling

De uitkomst wordt naar boven afgerond op hele eurocenten.

Wat maakt dit mechanisch? Dit is een pure wiskundige formule met kwadratische en lineaire termen. De wetgever heeft hier expliciet gekozen voor een algebraïsche notatie - inclusief variabelen, machten en constanten. Dit is één-op-één om te zetten naar code.

3. Kostendelersnorm (Bijstandsberekening)

→ Participatiewet, Artikel 22a, lid 2-3

De kostendelersnorm wordt berekend volgens de formule:
(40% + A × 30%) × N
waarbij:
A = aantal kostendelende medebewoners
N = gehuwdennorm genoemd in artikel 21, onderdeel b

Wat maakt dit mechanisch? Dit is letterlijk een wiskundige formule met variabelen, constanten en een exacte berekeningswijze. Het is een algoritme dat direct om te zetten is naar code.

🔍 Het Probleem

Deze wetten zijn algoritmes vermomd als tekst. Dit leidt tot drie problemen:

  1. 👩‍💻 Interpretatie door programmeurs zonder juridische achtergrond.
    • MERK OP: wetten in deze PoC zijn nu grotendeels door een programmeur (met behulp van een LLM) omgezet naar machine law. Uiteindelijk zouden dit soort gegenereerde machine law interpretaties het startpunt kunnen zijn voor juristen.
  2. 🤷 Gebrek aan transparantie voor burgers en ambtenaren ("computer says no")
  3. ⚠️ Moeilijke kwaliteitscontrole van implementaties

🔄 Voortbouwen op regels.overheid.nl

Dit experiment bouwt voort op regels.overheid.nl. Waar regels.overheid.nl zich vooral richt op het documenteren en publiceren van wetten, gaan wij een stap verder:

  1. Executeerbare Code: regel specificaties zijn niet alleen documentatie, maar daadwerkelijk uitvoerbare code die direct door computersystemen verwerkt kan worden
  2. Ingebouwde Engine: De specificaties komen met een engine die ze kan uitvoeren, valideren en testen
  3. Formele Verificatie: Door de exacte specificatie kunnen we bewijzen dat implementaties correct zijn en resolven.
  4. Directe Implementatie: Overheidsorganisaties kunnen (uiteindelijk) de specificaties direct in hun systemen gebruiken.

Dit maakt het mogelijk om wetten niet alleen te beschrijven, maar ook te testen en valideren voordat ze in productie gaan.

📚 Geïmplementeerde Wetten

Vooralsnog zijn deze wetten geïmplementeerd in machine law (met behulp van een LLM).

Zorgtoeslag

AOW

Ondersteunende Wetten

🚀 Aan de slag

git clone [email protected]:MinBZK/poc-machine-law.git
cd poc-machine-law
uv sync
uv run behave features --no-capture -v --define log_level=DEBUG

📂 Repository structuur

  • /law - Machine-leesbare wetspecificaties
  • /engine.py - De wetgevingsengine die specificaties uitvoert

🛣️ Roadmap

In willekeurige volgorde:

  • 📅 Implementatie van referentiedatums
  • 📚 Toevoegen van meer wetten naast de zorgtoeslagwet
  • ⚖️ Onderzoeken hoe algemene wetten (zoals bezwaarrecht) hierin passen
  • 🔧 Ontwikkelen van tools om wetten om te zetten
  • 🔍 Detectie van deadlocks/loops in wetgeving
  • 👥 Verbeteren van uitlegbaarheid naar burgers

🤝 Bijdragen

Bijdragen zijn welkom! Zie de issues voor openstaande punten.

About

Een proof-of-concept voor het omzetten van Nederlandse wetgeving naar machine-leesbare specificaties

Resources

Code of conduct

Security policy

Stars

Watchers

Forks