- Di Inggris, proses pengajuan paspor dipandang seperti game puzzle, dan pengalaman memformalkan proses pengajuan yang rumit ini dengan pemrograman menggunakan Haskell dibahas di sini
- Pengajuan paspor online menjadikan pengumpulan dokumen yang beragam, penafsiran aturan yang rumit, dan sub-quest tak terduga sebagai elemen kesenangan utamanya
- Dengan mengaitkan logika proses pengajuan ke 'Constructive Logic', ditekankan bahwa dokumen asli yang mendukung tiap pembuktian itu wajib ada
- Dengan memanfaatkan monad LogicT dan manajemen state (State) di Haskell, penulis melacak daftar dokumen yang diperlukan dan jalur logis pembuktian kewarganegaraan Inggris
- HMPO pada praktiknya cenderung lebih dulu meminta jalur pembuktian yang paling rumit, dan adopsi alat otomatis masih lambat karena keterbatasan dalam menafsirkan hukum yang kompleks
Pendahuluan: Pengajuan paspor sebagai permainan
- Belakangan ini tren menyelesaikan game online atau puzzle dengan pemrograman makin meningkat, dan Passport Application di Inggris juga dibahas dengan pendekatan seperti ini
- Passport Application adalah semacam "game petualangan puzzle pengumpulan dokumen" yang dimainkan warga Inggris tiap 10 tahun, dengan biaya sekitar £100 dan desain berbasis teks yang sangat minimalis
- Tujuan game ini adalah mengumpulkan berbagai dokumen pendukung (artefacts) melalui sejumlah instansi pemerintah untuk membuktikan bahwa "pemohon ini adalah warga Inggris" menurut kriteria hukum yang kompleks
- Hadiah dari game ini adalah sebuah buku paspor dan "tanggal saat permainan berikutnya bisa dimulai"
Struktur dan tingkat kesulitan permainan
- Versi offline berbasis kertas dijalankan melalui pos tercatat dan prosedur verifikasi, dan dokumen yang harus dikumpulkan di tiap tahap dijelaskan dalam bentuk panduan atau tabel
- Prosedur awal relatif mudah, tetapi seiring permainan berjalan, berbagai "side quest" dan rintangan mulai muncul
- Contoh: meminta verifikasi identitas dari kenalan dengan profesi tertentu, memperoleh terjemahan tersertifikasi untuk dokumen berbahasa asing, kerja sama keluarga, serta menjelajahi prosedur administratif unik di tiap instansi
Pengalaman: menantang tingkat kesulitan 'anak pertama yang lahir di luar negeri'
- Penulis, mewakili dirinya, mencoba tingkat kesulitan 'anak pertama yang lahir di luar negeri' untuk putri kecilnya, dan karena sudah punya banyak pengalaman sebelumnya, ia memperkirakan tingkat kesulitannya akan cukup tinggi
- Belakangan diketahui bahwa setengah dari permintaan dokumen awal sebenarnya tidak perlu, dan persyaratan serta penjelasan dokumen dirancang dengan sangat ambigu dan membingungkan
- Examiner yang menangani tidak bisa dihubungi langsung, dan bantuan tidak resmi hanya bisa diperoleh melalui agen perantara layanan konsultasi
- Permintaan dokumen terus muncul berulang kali, kadang bahkan meminta dokumen yang tidak ada, termasuk permintaan akta kelahiran/akta nikah leluhur keluarga yang langka, sehingga tingkat kesulitannya makin meningkat
Logika HMPO: Bureaucratic Logic
- Logika pengajuan paspor dapat dipandang sebagai Bureaucratic Logic (logika birokratis) yang diturunkan dari Constructive Logic
- Alih-alih pembuktian sederhana "benar/salah", pemohon harus langsung menyerahkan bukti dokumen asli yang sesuai untuk tiap aturan
- Karena Excluded Middle tidak diizinkan, tidak mungkin membuktikan dengan cara "salah satu dari skenario ini pasti benar"; pemohon harus mengikuti satu jalur tertentu dan menyerahkan dokumennya
- Khususnya, "Britishness" bergantung pada kewarganegaraan orang tua, sehingga permintaan dokumen berjalan secara rekursif dalam bentuk pohon keluarga
- Base case: lahir di Inggris sebelum 1983, naturalisasi, dan kasus lain yang tidak memerlukan bukti dari orang tua
Memodelkan aturan dengan kode Haskell
- Untuk memodularisasi aturan dan mengotomatisasi penalaran, logika pengajuan diprototipekan dengan Haskell (khususnya memanfaatkan monad LogicT)
- Dengan mendeklarasikan type seperti Person/Document/Proof, berbagai jalur dokumen pembuktian untuk tiap kondisi dimodelkan
- Fungsi pembuktian Britishness menelusuri berbagai jalur pembuktian yang mungkin (Set of Proofs) bersama input (informasi untuk tiap person)
- Dengan mengikuti pohon Proof, sistem menghasilkan kombinasi dokumen minimum yang diperlukan (Set of Set Document)
- Kombinasi StateT dan LogicT IO dipakai untuk kueri interaktif dan berbagi state, serta melakukan branching & backtracking sesuai "informasi yang sudah diketahui"
- Logika analisis struktur kewarganegaraan Inggris:
- Jalur tunggal untuk bukti naturalisasi
- Jalur (base) bersyarat untuk kelahiran di Inggris sebelum 1983
- Pembuktian rekursif melalui orang tua (termasuk syarat tambahan seperti pernikahan yang sah)
- Penambahan jalur pengecualian berdasarkan apakah orang tua berstatus BOTBD (British Otherwise Than By Descent)
- Aturan pengecualian seperti Crown Service juga ditangani dalam kode
Contoh eksekusi dan jalur pembuktian
- Melalui ghci, berdasarkan input nyata (tempat lahir pemohon, kewarganegaraan orang tua, dll.), sistem secara otomatis menurunkan total 3 jalur pembuktian (Proof)
- Untuk tiap jalur pembuktian, dihasilkan daftar dokumen yang diminta (kombinasi sertifikat, akta nikah, dan lain-lain)
- Pada jalur paling rumit, dipastikan bahwa pembuktian rekursif hingga leluhur dan pembuktian hubungan pernikahan diperlukan
Diskusi dan kesimpulan
- Dalam praktiknya, HMPO tampak sengaja lebih dulu meminta jalur pembuktian yang paling rumit, sementara kontradiksi hukum nyata atau aturan kecil biasanya mengikuti panduan terpisah atau prinsip "balance of probabilities"
- Jika alat otomatis semacam ini tersebar luas, pemohon akan jauh lebih mudah memahami jalur pembuktian dan dokumen yang mereka perlukan
- Namun, karena hukumnya sangat subtil dan mudah berubah, otomatisasi sederhana dengan "komputer memberi verdict yes/no" tetap berisiko
- Penulis saat ini sedang mencoba pembuktian melalui jalur kedua dan ketiga
Ringkasan kode referensi dan struktur dokumen
- Seluruh kode Haskell dapat dilihat di GitHub
- Implementasi detail logika Haskell seperti berbagai type, jalur pembuktian, struktur modul, dan fungsi kueri dapat diperiksa di sana
1 komentar
Opini Hacker News
SELECTdi tabel SQL, jadi struktur seperti ini sulit dipercaya.:dan=juga bisa membingungkan bagi pemula, jadi intuisi adalah hasil dari kebiasaan.multiverse). Komunikasi dengan petugas layanan dan staf operasional yang berperan seperti “NPC” terasa seperti doa satu arah, sulit benar-benar tersampaikan. Ada dugaan OP adalah penggemar game Mornington Crescent, karena aturan-aturannya mirip dengan pengajuan paspor.