5 पॉइंट द्वारा GN⁺ 2023-09-18 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Catala एक domain-specific language है जो विधायी टेक्स्ट से faithful-by-construction एल्गोरिदम निकालने के लिए बनाई गई है, और सामाजिक व वित्तीय कानूनों की literate programming के लिए तैयार की गई programming language है
  • कानून, कार्यान्वयन आदेश, न्यायिक मिसालें आदि—लागू किए जाने वाले सामाजिक व वित्तीय mechanisms से जुड़ी सामग्री—इकट्ठा करने के बाद, हर प्रावधान के अनुसार प्रत्येक पंक्ति के अर्थ को code के रूप में annotate करके implementation लिखा जाता है
  • Catala compiler पूरा और test किया गया code लेकर वकीलों द्वारा पढ़ी जा सकने वाली implementation की PDF version बना सकता है; यह भाषा कानूनी विशेषज्ञों के साथ मिलकर design की गई है ताकि वे review कर सकें और correctness certify कर सकें
  • इसका मुख्य concept Sarah Lawsky प्रोफेसर के A Logic for Statutes पर आधारित definition-under-conditions और default logic है; कानून की logical structure को भाषा की logical structure mimic करती है
  • Development tools के रूप में कई text editors के लिए syntax highlighting, VSCode extension, dedicated LSP server, code navigation, auto-completion, test suite UX, और catala-format formatter उपलब्ध हैं
  • सीखने और reference के लिए Catala book, Catala tutorial, फ्रेंच व अंग्रेज़ी grammar cheat sheet, और नवीनतम master version की compiler documentation उपलब्ध हैं
  • Compiler और repository के भीतर का code, जब तक subdirectories में अलग license न दिया गया हो, Apache license version 2 के तहत distribute किया जाता है
  • Catala Inria का research project है, और compiler अभी unstable है तथा कुछ features की कमी है

1 टिप्पणियां

 
GN⁺ 2023-09-18
Hacker News टिप्पणियां
  • यह प्रोजेक्ट मानो यह बात चुपचाप मान लेता है कि कानूनी धाराओं को औपचारिक रूप से specify करना और ऐसा सिस्टम बनाना अच्छा है जिसमें कानूनों की व्याख्या काफी हद तक मशीनों द्वारा की जा सके
    इससे आगे, यह मौजूदा मानवीय व्याख्याकारों की उस व्यवस्था को, जिसमें विवेक और त्रुटि की गुंजाइश होती है, पार पाने योग्य समस्या मानता है; मैं उस धारणा से पूरी तरह असहमत तो नहीं हूं, लेकिन यह भी स्पष्ट नहीं कि वह सही है, और लेखकों ने उसे समर्थन देने वाले तर्क दिए हों ऐसा भी नहीं लगता

    • इस प्रोजेक्ट की प्रेरणा इतनी दार्शनिक होने से कहीं ज्यादा व्यावहारिक होने की संभावना दिखती है, और लगता है कि यह इस बात को कम आंकता है कि कानून कितनी बार राज्य सरकारों के IT systems में चलने वाले code में बदल जाते हैं
      कानूनों को code में बदलने की प्रक्रिया जानने वाले के नजरिए से, भले ही इसका मूल्य केवल software developers को स्पष्टता देने तक सीमित हो, फिर भी समझ आता है कि यह प्रोजेक्ट क्या करने की कोशिश कर रहा है
    • यह काफी स्वाभाविक लगता है, और मुझे लगता है कि कानून पहले से ही इसी दिशा में जाना चाहता है। वैसे भी case law के जरिए हम बहुत सटीक कानून तक पहुंचते हैं, लेकिन वहां तक पहुंचने में कानूनी खर्च बहुत ज्यादा होता है। कम से कम Catala homepage पर यह कोई ऐसी बात नहीं लगती जिसके लिए अलग से तर्क देना पड़े
      मुझे लगता है कि इसका rule of law से भी गहरा संबंध है। https://www.britannica.com/topic/rule-of-law के अनुसार, कानून सार्वजनिक और स्पष्ट होना चाहिए, उसका सामान्य रूप और सार्वभौमिक लागू-योग्यता होनी चाहिए, उसमें ऐसे निश्चित मानदंड होने चाहिए जिन्हें लोग कार्रवाई से पहले देख सकें, और कानूनी दायित्व पीछे की तारीख से नहीं बनाए जाने चाहिए। अस्पष्ट कानून का लाभ क्या है, यह जानने की उत्सुकता है
    • टैक्स स्लैब की गणना जैसे कुछ कानून ठीक हो सकते हैं, लेकिन मेरा मानना है कि अधिकांश कानूनों को इस तरह code में नहीं बदला जाना चाहिए
    • यह फ्रांसीसी कानूनी परंपरा से काफी मेल खाता है। Montesquieu की बात याद करिए कि “जज केवल कानून का मुंह है”
      कानून की डिग्री पढ़ते समय, एक programmer के रूप में मुझे इस क्षेत्र में काफी रुचि थी, और मैंने फ्रांसीसी-भाषी दुनिया में ऐसे legalistic काम करने वाली एक बड़ी community पाई थी। मेरी university में इस दिशा में रुचि रखने वाले professor भी उसी प्रभाव-क्षेत्र की ओर झुके हुए लगते थे
  • कई सालों से मैं अपने lawyer दोस्त को समझा रहा था कि काश ठीक ऐसी कोई चीज होती, और पता चला कि शायद यह तो हमेशा से मौजूद रही है
    मुझे यह सचमुच शानदार लगता है। सभी कानून इसी तरह की language में लिखे जाने चाहिए, और syntax highlighting व consistent formatting rules के साथ प्रकाशित होने चाहिए। इसके बाद school curriculum में इस कानूनी भाषा को सीखना शामिल होना चाहिए। तब लोगों की कानून पढ़ने और अपनी समझ पर भरोसा रखने की क्षमता बहुत बढ़ेगी, और समाज को भी बड़ा लाभ होगा

    • यह असल में कानून कैसे काम करता है, इस बारे में काफी बड़ी गलतफहमी लगती है, और शायद यह lawyer dramas से और मजबूत हुई है, जो कठिन शब्दों वाले खेल पर जोर देते हैं
      वास्तविक कानून पहले से ही अपेक्षाकृत साधारण भाषा में लिखे जाते हैं, और शब्द भी लगभग हमेशा सामान्य English वाले अर्थ में ही होते हैं। समस्या यह है कि वे शब्द जिन कानूनी concepts का वर्णन करते हैं वे खुद जटिल होते हैं, और अक्सर दूसरे कानूनों, regulations, case law आदि के references आपस में उलझे होते हैं
    • सिद्धांत रूप में सहमत हूं, लेकिन कानून आम तौर पर व्याख्या और case law पर इतना अधिक निर्भर करता है कि उसे आपकी अपेक्षा के तरीके से व्यक्त और समझना कठिन है
    • links ही मुख्य बात हो सकते हैं। अगर case law, justification rationale और citations को Hammurabi की मूल घोषणा तक पीछे trace किया जा सके, तो यह काफी शिक्षाप्रद होगा
    • बड़ी समस्या यह है कि कानून की व्याख्या करते आए पूरे case law को हम खो देंगे। यह दो सदियों की bug reports और patches फेंक देने जैसा है
      साथ ही Uniform Commercial Code जैसे मामलों में कानून codified भी है। यानी case law को लगातार फिर से लिखकर, patches को merge कर व्यवस्थित किया गया उदाहरण
  • test cases को भी साथ में “बुन” दिया जाए तो दिलचस्प होगा। logic statements जहां आपस में सटती हैं, वही work surface bugs के घुसने की जगह होती है
    खासकर temporal events के आसपास, और यह formal model तक ले जाता है, जिससे bugs भी बढ़ते हैं। आम तौर पर अगर किसी key से जुड़ा rule हो तो कम से कम तीन tests चाहिए¹: बड़ा मामला, बराबर मामला, छोटा मामला। types आदि न हों तो negative numbers, null, maximum/minimum boundary inputs भी चाहिए
    उदाहरण के लिए, “जब regulation 3 महीने बाद पास हो, parties B exercise न कर पाई हों, फिर भी ‘17 tons’ कचरा dump किया गया हो…” जैसे timeline-based tests रखे जा सकते हैं। model checker integrate हो जाए तो बहुत मदद मिलेगी। formally verified legislation, या कम से कम भाषा को code में encode करने की प्रक्रिया के लिए DevOps जैसा pipeline भी रखा जा सकता है
    ¹ https://en.m.wikipedia.org/wiki/Equivalence_partitioning

    • यह compile नहीं होगा, जाहिर है मजाक है
      कई कानूनों में ambiguous expressions बहुत होते हैं। Russian vehicles को allow करना है या नहीं, इस पर हालिया EU regulation अच्छा example है। हालांकि कानून को programming language में “digitalize” करने की कोशिश करते समय संभावित ambiguity या धुंधली definitions सब खोज निकालने के लिए यह अच्छा idea हो सकता है
    • बहुत अच्छा। legacy code को कैसे इस्तेमाल करना है यह समझने के लिए मैं अक्सर unit tests देखता हूं। अगर कानून legal document के हिस्से के रूप में concrete examples के साथ आए, तो हम यह test कर सकते हैं कि rules logically consistent हैं या नहीं और हमारी समझ सही है या नहीं
      यह कुछ वैसा है जैसे reviewer को code काम करता है यह मनवाने के लिए unit/integration/end-to-end tests से साबित करना। यानी legal system में भी end-to-end tests रखना
    • कल्पना कीजिए, test-driven development को कानून पर लागू करना
      एक कदम आगे जाकर tests का bundle लिखा जा सकता है, और उन tests को satisfy करने वाले संभावित laws की range automatically generate की जा सकती है
    • unit tests हों तो अच्छा होगा
  • कानून की मंशा को स्पष्ट करने वाला मानक टेस्ट सूट फ़ॉर्मैट और देखना चाहूंगा
    जिस राज्य में मैं पहले रहता था, वहां अच्छे इरादे से बहुत सरल child pornography प्रतिबंध कानून प्रस्तावित किया गया था, लेकिन वह बहुत ही सरल था। मोटे तौर पर “जो व्यक्ति मोबाइल फोन से किसी नाबालिग की explicit तस्वीर भेजता है, वह child pornography भेजने का अपराधी होगा” जैसा था, और कानूनी भाषा में लिखा था, लेकिन इससे बहुत ज्यादा विस्तार में नहीं था। मैंने बिल पेश करने वाले से फोन पर पूछा कि अगर मेरी काल्पनिक बेटी अपनी nude तस्वीर अपने boyfriend को भेजे, तो क्या नए कानून के तहत वह felony अपराधी बन जाएगी; उनका जवाब था, “अरे, ऐसा मतलब नहीं था!” और आखिरकार बिल को फिर से लिखने के लिए वापस ले लिया गया
    कल्पना की जा सकती है कि इसे program code की तरह माना जाए और “यह कानून उस स्थिति में लागू नहीं होता जब कोई नाबालिग अपनी ही तस्वीर भेजता है” जैसे tests जोड़े जाएं। इससे कानून बनाने वालों को अपनी मंशा साफ करनी पड़ेगी, और अगर वे कहते हैं कि “online child safety law का इस्तेमाल pro-trans content पर प्रतिबंध लगाने के लिए नहीं करेंगे,” तो कहा जा सकता है, “ठीक है, इसे test case में डालते हैं।” निर्णायक बाधा यह है कि politicians इस तरह बांध दिए जाने को पसंद नहीं करते
    इससे मंशा को दर्शाने वाला कानून लिखना भी आसान होगा, और भविष्य की courts कानून की मंशा का आकलन करने में इसका इस्तेमाल कर सकेंगी। भले ही शब्दशः 15 साल के बच्चे द्वारा selfie भेजने पर कानून लागू होता हो, अगर test यह स्पष्ट करे कि ऐसा इरादा नहीं था, तो बरी किया जा सकता है। सैकड़ों वजहों से यह असंभव होगा, लेकिन सपना तो देखा जा सकता है

    • इस तरीके के कारगर होने के लिए वास्तविक legislative intent सही तरह encode होना चाहिए, इसलिए हो सकता है कि यह मामला फिर भी हल न हुआ हो, और lawmakers को नेक नीयत से काम करना होगा
      यानी ऐसा नहीं होना चाहिए कि कानून जानबूझकर अस्पष्ट बनाया जाए ताकि वह व्यापक रूप से फंसा सके, और लोगों को court में लड़ने दिया जाए
    • काम का 99% edge cases ढूंढने में है, और कानून में ऐसे edge cases को स्पष्ट रूप से लिख देना सबसे आम बात है। वह legislator शायद वापस जाकर “नाबालिग द्वारा अपनी ही तस्वीर भेजना इस धारा का उल्लंघन नहीं माना जाएगा” जैसा प्रावधान जोड़ता
      कानून को computer पर executable होना जरूरी नहीं है। यह मंशा और उसकी व्याख्या के बारे में है, इसलिए test suite खुद भी असल में कानून का हिस्सा है, और उसे सीधे कानून में शामिल कर देना चाहिए
    • सिद्धांत में मुझे यह कुछ हद तक पसंद है, लेकिन वास्तविक court system से बेहतर “test suite” बनाना शाब्दिक रूप से 100% असंभव लगता है
    • कानून के tests अच्छे होंगे, लेकिन शायद उनका “मूल्यांकन” उसी mechanism से करना होगा जो उन्हें लागू करता है। यानी court
      व्यक्तिगत रूप से, किसी भी देश में अगर कानून के साथ legislative purpose जोड़ दिया जाए तो मैं संतुष्ट होऊंगा। अगर संभव हो, तो यह देखने के लिए key performance indicators भी जोड़ दिए जाएं कि वह काम कर रहा है या नहीं। बाद में फिर से आकलन किया जा सके कि कानून सच में काम कर रहा है या उल्टा असर डाल रहा है, और क्या उसके मुख्य use cases शुरुआत में लाए जाने के कारणों से अलग हैं
    • यह शानदार है कि विधायक इतना सजग था कि उसने बिल वापस ले लिया। Minnesota जैसे कुछ राज्य नाबालिगों की sexting पर सचमुच सक्रिय रूप से मुकदमा चलाते दिखते हैं
      [1] https://www.aclu.org/news/juvenile-justice/minnesota-prosecu...
  • Greg Bear की किताब Moving Mars(1993) में Legal Logic नाम से कुछ ऐसा ही संक्षेप में आता है। मानव Martians इसे अपने नए स्वतंत्र समाज के कानून बनाते समय AI की मदद से इस्तेमाल करते हैं
    Greg Bear एक प्रसिद्ध SF लेखक थे, जिनका एक साल से भी कम समय पहले निधन हुआ था, और उस समय यहां भी उनकी obituary पर चर्चा हुई थी। वे मेरे किशोरावस्था पर बड़ा असर डालने वाले लेखकों में से एक थे, इसलिए मुझे खास तौर पर याद है कि Moving Mars का यह तत्व कल्पना को उकसाने वाला था, और मैं पढ़ना चाहूंगा कि Catala क्या प्रदान करता है
    [1] https://en.wikipedia.org/wiki/Greg_Bear
    [2] https://en.wikipedia.org/wiki/Moving_Mars
    [3] https://news.ycombinator.com/item?id=33679668
    [4] https://news.ycombinator.com/item?id=33675708

  • इस भाषा को समझाने वाला एक paper है: https://hal.inria.fr/hal-03159939। एक छोटा video summary भी है: https://youtu.be/OiaFTFSAa1I

  • Programmers कानून में “programming language” जैसी चीज इस्तेमाल करने का सुझाव देना पसंद करते हैं
    लेकिन यह बात छूट जाती है कि ambiguity कुछ मायनों में कानून का मूल रूप से महत्वपूर्ण हिस्सा है। क्योंकि दुनिया खुद कुछ मायनों में मूल रूप से अस्पष्ट है, और कुछ मायनों में साफ-साफ बंटी हुई है। बेशक, हर तरह की ambiguity वांछनीय नहीं है
    लेकिन अगर “code ही law” बन जाए, तो loopholes का फायदा उठाने के तरीके और खराब होंगे, ऐसा मुझे लगता है। यहां तक कि कई कानूनों को detailed implementation की बजाय उन मूल्यों पर ज्यादा ध्यान देना चाहिए जिनका पालन होना है, और यह स्वभावतः कम स्पष्ट और अधिक ambiguous होता है

    • सहमत हूं। मुझे नहीं लगता कि यह बुरा idea है, लेकिन perfectly defined और perfectly enforceable कानून का विचार डरावना लगता है। अगर आज मौजूद हर कानून को perfectly enforce और perfectly monitor किया जा सके, तो हमारी जिंदगी पूरी तरह बदहाल हो जाएगी
      मैं यह बहस नहीं करूंगा कि यह कानून की समस्या है या enforcement की, लेकिन किसी भी तरह हमारा समाज ambiguity और uneven enforcement पर बना है
    • मुझे नहीं लगता कि ऐसे project और ambiguity के बीच टकराव होना जरूरी है। concepts section में value.fair_market देखें [0]। Lawyers इसके अर्थ पर बहस कर सकते हैं, लेकिन competing definitions को भी program के रूप में define किया जा सकता है
      मैं सहमत हूं कि कानून पर ध्यान implementation details की बजाय outcomes पर होना चाहिए। इसके लिए नए कानून के outcomes को मापने वाली evaluation function बनाने का तरीका चाहिए, और Catala जैसे systems expected outcomes को model करने और competing bills के बीच चुनने में मदद कर सकते हैं। उदाहरण के लिए अगर outcome “pollution घटाना चाहते हैं” है, तो policy “polluting industries पर प्रतिबंध” भी हो सकती है या “pollution externalities पर tax” भी, और दोनों complex outcomes पैदा करते हैं, इसलिए automated analysis और empirical measurement बेहतर होंगे
      [0] https://github.com/CatalaLang/catala#concepts
  • मुझे पूरी तरह नहीं पता कि कंप्यूटरों के लिए कानूनी भाषा पर सचमुच reasoning करने में कोई बड़ा हल करने लायक समस्या है या नहीं। जटिल हिस्सा equity का balancing है, और इसके लिए अब भी इंसानों और वकीलों की ज़रूरत पड़ती है

    • सही। हालांकि tax tables से algorithm बनाते समय clarity मदद कर सकती है, और कभी-कभी wording अस्पष्ट भी लगती है। शायद बहुत सारे examples भी चाहिए होंगे। यानी कहें तो unit tests की ज़रूरत होगी
    • इस भाषा का एक फायदा दिखता है। यह tax और payroll calculate करने वाले programs लिखना बहुत आसान बना सकती है। इसके अलावा यह क्या दे सकती है, पता नहीं
      सोचता हूँ कि legislators, lawyers, judges में से कोई इसकी उम्मीद कर रहा है या सिर्फ programmers ही कर रहे हैं
    • शायद आप “इंसान, वकील, और रिश्वत” कहना चाह रहे थे
      मुझे हमारी legal system पर ज़्यादा भरोसा नहीं है। पता नहीं आप क्यों पूछ रहे हैं
  • Catalan बोलने वाले के तौर पर, लेख में जिस language की बात है उसके साथ name collision बहुत दुर्भाग्यपूर्ण लगता है

    • जानना चाहूँगा कि यह दुर्भाग्यपूर्ण क्यों है। और username पसंद आया। सिर्फ उस नाम को देखकर ही बहुत लोगों ने अंदाज़ा लगा लिया होगा कि आप Catalan बोलते होंगे
  • नाम का चुनाव वाकई दुर्भाग्यपूर्ण है। किसी programming language का नाम “français”, “Deutsch”, या “English” रखने जैसा है
    readme के नीचे लिखा है कि “इस language का नाम Pierre Catala के नाम पर रखा गया है।” मेरी सलाह है कि इसे PierreLang कर दें

    • लिखा है, “इस language का नाम कानून के professor Pierre Catala के नाम पर रखा गया है, जिन्होंने legal cases के computer database Juris-Data बनाकर French legaltech की शुरुआत की”
      Catalan native speaker के रूप में नाम देखकर मैं काफी चौंका था, लेकिन अगर यह आम surname है तो बात समझ में आती है