- Die britische Passbeantragung wird wie ein Puzzlespiel betrachtet, und die Erfahrung wird beschrieben, diesen komplexen Antragsprozess mit Haskell zu programmieren und in Regeln zu fassen.
- Die Online-Passbeantragung lebt vor allem vom Sammeln verschiedenster Dokumente, der Auslegung komplexer Regeln und unerwarteten Sub-Quests.
- Die Logik des Antragsprozesses wird mit der 'Constructive Logic' verknüpft, wobei betont wird, dass Originaldokumente zwingend erforderlich sind, um jeden einzelnen Beweis zu stützen.
- Mit der LogicT-Monade von Haskell und Zustandsverwaltung (State) werden die erforderlichen Dokumentlisten und die logischen Pfade zum Nachweis der britischen Staatsbürgerschaft verfolgt.
- HMPO scheint in der Praxis dazu zu neigen, zuerst den komplexesten Nachweispfad zu verlangen, und wegen der Grenzen bei der Interpretation komplexer Gesetze werden Automatisierungstools nur zögerlich eingeführt.
Einleitung: Die Passbeantragung als Spiel
- Während der Trend zunimmt, mit Programmierung Online-Spiele oder Rätsel zu lösen, wird auch die britische Passport Application auf diese Weise betrachtet.
- Die Passport Application ist eine Art „Abenteuer-Puzzle-Dokumentensammelspiel“, das Briten alle zehn Jahre genießen, mit Kosten von etwa £100 und einem konsequent minimalistischen textbasierten Design.
- Ziel dieses Spiels ist es, über verschiedene Behörden mehrere Nachweisdokumente (artefacts) zu sammeln und unter komplexen rechtlichen Kriterien zu beweisen: „Diese antragstellende Person ist britisch“.
- Die Belohnung des Spiels ist ein Passheft und „das Datum, an dem der nächste Durchlauf möglich ist“.
Struktur und Schwierigkeitsgrad des Spiels
- Die papierbasierte Offline-Version läuft über Einschreiben und Beglaubigungsverfahren; die in jedem Schritt zu sammelnden Dokumente werden in Anleitungen oder Tabellen beschrieben.
- Der Einstieg ist vergleichsweise leicht, doch mit fortschreitendem Spiel tauchen verschiedenste „Side Quests“ und Hürden auf.
- Beispiele: eine Identitätsbestätigung durch eine bekannte Person mit bestimmtem Beruf einholen, beglaubigte Übersetzungen fremdsprachiger Unterlagen beschaffen, kooperatives Familienspiel, Erkundung der jeweils eigenen Verwaltungsabläufe einzelner Behörden usw.
Erfahrungsbericht: Schwierigkeit 'erstes im Ausland geborenes Kind'
- Der Autor übernahm für seine kleine Tochter die Schwierigkeit „erstes im Ausland geborenes Kind“ und rechnete aufgrund zahlreicher Vorerfahrungen bereits mit einem hohen Schwierigkeitsgrad.
- Später stellte sich heraus, dass die Hälfte der anfangs geforderten Dokumente unnötig war; Anforderungen und Erklärungen zu den Unterlagen sind deutlich vage und verwirrend gestaltet.
- Mit dem zuständigen Prüfer (examiner) kann nicht direkt kommuniziert werden; nur über einen vermittelnden Beratungsagenten ist inoffizielle Hilfe möglich.
- Wiederholt kommen neue angeforderte Dokumente hinzu, teilweise werden sogar nicht existierende Unterlagen verlangt; Anforderungen wie die Vorlage von Geburts-/Heiratsurkunden seltener Vorfahren treiben den Schwierigkeitsgrad immer weiter nach oben.
Die Logik von HMPO: Bureaucratic Logic
- Die Logik der Passbeantragung kann als Bureaucratic Logic betrachtet werden, abgeleitet aus der Constructive Logic.
- Statt eines einfachen Beweises von „wahr/falsch“ müssen Originaldokumente als Nachweis für jede Regel direkt eingereicht werden.
- Da der ausgeschlossene Dritte (Excluded Middle) nicht zulässig ist, kann man nicht mit „eines von zwei Szenarien wird schon stimmen“ argumentieren; man muss zwingend einem einzelnen Pfad folgen und die entsprechenden Unterlagen einreichen.
- Insbesondere hängt die „Britishness“ von der Staatsangehörigkeit der Eltern ab, und die Dokumentenanforderungen verlaufen rekursiv in Form eines Familienstammbaums.
- Basisfall: Geburt im Vereinigten Königreich vor 1983, Einbürgerung usw., also Fälle ohne erforderlichen Nachweis über die Eltern.
Regeln mit Haskell modellieren
- Zur Modularisierung der Regeln und zur Automatisierung der Schlussfolgerungen wurde die Antragslogik in Haskell prototypisch modelliert, insbesondere mit der LogicT-Monade.
- Es werden Typen wie Person/Document/Proof deklariert, um verschiedene Pfade von Nachweisdokumenten je nach Bedingung zu modellieren.
- Eine Funktion zum Nachweis der Britishness durchsucht zusammen mit den Eingaben (Informationen zu jeder Person) mehrere mögliche Nachweispfade (Set of Proofs).
- Entlang des Proof-Baums wird die minimale Dokumentenkombination (Set of Set Document) berechnet.
- Mit der Kombination aus StateT und LogicT IO werden interaktive Abfragen und gemeinsamer Zustand umgesetzt; je nach „bekannten Informationen“ wird verzweigt und zurückverfolgt.
- Logik zur Analyse der britischen Staatsbürgerschaftsstruktur:
- einzelner Pfad über Einbürgerungsnachweis
- bedingter (Basis-)Pfad bei Geburt im Vereinigten Königreich vor 1983
- rekursiver Nachweis über die Eltern (einschließlich zusätzlicher Bedingungen wie rechtmäßige Ehe)
- neuer Sonderpfad abhängig davon, ob ein Elternteil BOTBD (British Otherwise Than By Descent) ist
- Ausnahmeregelungen wie Crown Service werden ebenfalls im Code behandelt
Beispielausführung und Nachweispfade
- Über ghci werden anhand konkreter Eingaben (Geburtsort des Antragstellers, Staatsangehörigkeit der Eltern usw.) automatisch insgesamt drei Nachweispfade (Proofs) ermittelt.
- Für jeden Nachweispfad wird eine Liste der erforderlichen Dokumente (Kombinationen aus Urkunden, Heiratsurkunden usw.) ausgegeben.
- Beim komplexesten Pfad zeigt sich, dass rekursive Nachweise bis zu Vorfahren zurück sowie der Nachweis von Eheverhältnissen erforderlich sind.
Diskussion und Fazit
- In der Praxis wirkt es, als verlange HMPO absichtlich zuerst den komplexesten Nachweispfad; tatsächliche rechtliche Widersprüche oder feine Sonderregeln folgen separaten Leitlinien oder dem Prinzip der „balance of probabilities“.
- Würden Automatisierungstools breiter eingeführt, könnten Antragsteller ihren Nachweispfad und die benötigten Dokumente deutlich leichter ermitteln.
- Da das Recht jedoch äußerst subtil und wandelbar ist, birgt eine einfache Automatisierung, bei der „der Computer ein yes/no verdict“ fällt, Risiken.
- Der Autor versucht derzeit, den Nachweis über den zweiten und dritten Pfad zu führen.
Zusammenfassung zu Referenzcode und Dokumentstruktur
- Der vollständige Haskell-Code ist auf GitHub einsehbar.
- Dort finden sich Details zur Haskell-Logik, darunter verschiedene Typen, Nachweispfade, Modulstruktur und Abfragefunktionen.
1 Kommentare
Hacker-News-Kommentare
:und=sei für Anfänger eine Quelle der Verwirrung; Intuitivität sei daher das Ergebnis von Gewöhnung.