5 ポイント 投稿者 GN⁺ 2023-09-18 | 1件のコメント | WhatsAppで共有
  • Catalaは、立法テキストから faithful-by-construction アルゴリズム を導出するためのドメイン特化言語であり、社会・財政立法のリテラテイトプログラミングに合わせて設計されたプログラミング言語
  • 法律、施行令、判例など、実装対象となる社会・財政メカニズムに関する資料を集めたうえで、条項ごとに各行の意味をコードとして注釈化する形で実装を記述する
  • Catalaコンパイラは、完成してテスト済みのコードから、弁護士が読める PDF版 の実装を生成できる。また、法律専門家がレビューし、正確性を認証できるよう、法律専門家との協業を前提に設計された言語でもある
  • 中核概念は、Sarah Lawsky教授の A Logic for Statutes に基づく definition-under-conditions と default logic であり、法の論理構造を言語の論理構造が模倣している
  • 開発ツールとして、各種テキストエディタ向けのシンタックスハイライト、VSCode拡張、専用LSPサーバー、コードナビゲーション、自動補完、テストスイートUX、catala-format フォーマッタを提供している
  • 学習およびリファレンスには、Catala bookCatala tutorial、フランス語・英語文法の cheat sheet、最新 master バージョンの コンパイラ文書 を利用できる
  • コンパイラおよびリポジトリ内のコードは、サブディレクトリに別途ライセンス表記がない限り、Apache license version 2 で配布される
  • CatalaはInriaの研究プロジェクトであり、コンパイラはまだ不安定で、一部機能が不足している

1件のコメント

 
GN⁺ 2023-09-18
Hacker News のコメント
  • このプロジェクトは、法律の条文を形式的に仕様化し、法令をおおむね機械的に解釈できる体系が望ましいものだと暗黙に仮定しているように見える。
    さらに言えば、裁量や誤差の余地を持つ既存の人間による解釈者の体系は克服すべき問題だと見ていることになるが、その仮定に全面的に反対するわけではないものの、それが正しいかも明確ではなく、著者らがそれを裏づける論拠を示しているようにも見えない。

    • このプロジェクトの動機は、そこまで哲学的なものというより、はるかに実務的なものである可能性が高そうで、法律が州政府の情報システムで実行されるコードにどれほど頻繁に変換されているかを過小評価しているように思える。
      法令をコードに変える過程を知っている立場からすると、価値がソフトウェア開発者に明確さを提供することに限られるとしても、このプロジェクトがやろうとしていることは理解できる。
    • これはかなり当然に見えるし、法律もすでに目指していることだと思う。いずれ判例を通じて非常に精密な法律に到達するが、そこに至るまでに高い法的コストがかかる。少なくとも Catala のホームページでわざわざ論証すべき内容ではないように思う。
      これは法の支配とも密接に関係していると思う。https://www.britannica.com/topic/rule-of-law によれば、法律は公開され、明確で、一般的な形式と普遍的な適用可能性を持ち、人々が行動する前に参照できる確定的な要件を含むべきであり、法的義務が遡及的に作られてはならない。曖昧な法律にどんな利点があるのか気になる。
    • 税率区分の計算のような一部の法律ならよいだろうが、ほとんどの法律はこのようにコード化すべきではないと思う。
    • これはフランス法の伝統とはかなり相性がよい。モンテスキューが「裁判官は法の口にすぎない」と述べたことを思い出せばよい。
      法学の学位を取っていたとき、プログラマーとしてこの分野にかなり関心があり、フランス語圏でこうした法律主義的な取り組みを行う大きなコミュニティを見つけた。私の大学でこの方面に関心を持っていた教授も、その影響圏の側に傾いているように見えた。
  • 何年もの間、弁護士の友人にまさにこういうものがあればいいと説得してきたが、実はおそらくずっと存在していたようだ。
    本当にすばらしいと思う。すべての法律はこのような言語で書かれ、シンタックスハイライトと一貫した書式ルールで公開されるべきだ。そのうえで、学校のカリキュラムにこの法律言語を学ぶ内容を含めるべきだ。そうすれば、人々が法律を読み、自分の理解に自信を持つ能力は大きく向上し、社会的にも大きな利益になるだろう。

    • これは実際に法律が機能する仕組みに対するかなり大きな誤解に見え、難解な言葉遊びを強調する弁護士ドラマによってさらに強められているように思う。
      現実の法律はすでに比較的平易な言葉で書かれており、単語もほとんど常に一般英語での意味そのままだ。問題は、その単語が説明している法概念そのものが複雑であり、他の法律・規則・判例などへの参照が絡み合うことが多い点にある。
    • 原則としては同意するが、法律は通常、解釈と判例にあまりにも多く依存しているため、期待するような形で表現し理解するのは難しい。
    • リンクが鍵になるかもしれない。判例、正当化の根拠、引用をハンムラビの原初的な発話までさかのぼって追跡できるなら、かなり教育的だろう。
    • 大きな問題は、法律を解釈してきた判例法をすべて失うことだ。2世紀分のバグレポートとパッチを捨てるようなものだ。
      同時に、Uniform Commercial Code のように法律が成文化されている場合もある。つまり判例法を一貫した形で書き直し、パッチをマージして整理した事例である。
  • テストケースも一緒に「織り込む」と面白そうだ。論理文が接する作業面こそ、バグが入り込む場所である。
    特に時間的な出来事の周辺ではそうで、それは形式モデルにつながり、バグもさらに増える。通常、キーに関するルールがあるなら少なくとも3つのテストが必要だ¹:より大きい場合、同じ場合、より小さい場合。型などがなければ、負数、null、最大値/最小値の境界入力も必要になる。
    たとえば「規則が3か月後に成立し、当事者が B を行使できなくなったが、それでも『17トン』の廃棄物が投棄されたとき……」のようなタイムラインベースのテストを置ける。モデル検査器が統合されれば大いに役立つだろう。形式検証された立法、少なくとも言語をコードにエンコードする過程に DevOps のようなパイプラインを置くこともできそうだ。
    ¹ https://en.m.wikipedia.org/wiki/Equivalence_partitioning

    • コンパイルされないだろう、もちろん冗談だ。
      多くの法律には多義的な表現が多く含まれている。ロシア車両を認めるかどうかに関する最近の EU 規則がよい例だ。ただし、法律をプログラミング言語へ「デジタル化」しようとするとき、あり得る多義性や曖昧な定義をすべて見つけ出すにはよいアイデアかもしれない。
    • とてもよい。レガシーコードをどう使うべきか理解するために、ユニットテストをよく見る。法律が法的文書の一部である具体例とともに提供されるなら、ルールが論理的に一貫しているか、そして私たちの理解が正しいかの両方をテストできる。
      レビュアーにコードが動くと納得してもらうために、ユニット/統合/エンドツーエンドテストで証明しようとするのに似ている。法体系にもエンドツーエンドテストを置くということだ。
    • 想像してみると、テスト駆動開発を法律に適用するということだ。
      さらに一歩進めてテスト群を作成し、そのテストを満たす可能な法律の範囲を自動生成することもできる。
    • ユニットテストがあるとよい。
  • 法の意図を明示する標準テストスイート形式をもっと見てみたい
    以前住んでいた州で、善意から非常に単純な児童ポルノ禁止法が提案されたのだが、単純すぎた。大まかには「携帯電話で未成年者の露骨な写真を送る者は、児童ポルノ頒布罪に問われる」というようなもので、法律用語では書かれていたが、それ以上に詳しい内容ではなかった。法案提出者に電話して、仮に自分の娘が自分の裸の写真を彼氏に送ったら、新法の下では重罪犯になるのではないかと尋ねたところ、「ああ、しまった、そういう意味ではなかった!」という反応で、結局書き直すために法案を取り下げた
    これをプログラムコードのように扱い、「この法律は、未成年者が自分自身の写真を送る場合には適用されない」といったテストを付けることを想像できる。立法者に意図を明確にさせ、「オンライン児童安全法をトランスジェンダー支持コンテンツの禁止には使わない」と言うなら、「よし、それをテストケースに入れよう」と言える。政治家がそのように明文化されるのを嫌がる点が決定的な障害だ
    また、意図を反映した法律を書きやすくなり、将来の裁判所が法の意図を評価するのにも使える。文言上は15歳がセルフィーを送る場合に適用されるとしても、テストがそれは意図していないと明示していれば、無罪になり得る。何百もの理由で不可能だろうが、夢見ることはできる

    • この方法が有効であるには、実際の立法意図が正しくエンコードされなければならないので、この例は解決されなかったかもしれず、立法者が善意で行動する必要がある
      つまり、広く引っかかるようにわざと曖昧に法律を作り、人々に裁判所で争わせるようなやり方であってはならない
    • 作業の99%は境界事例を見つけ出すことにあり、法律ではそうした境界事例を明示的に書いておくのが最も一般的だ。その立法者は戻って、「未成年者が自分自身の写真を送ることは本条項違反とはみなさない」といった条項を追加したのだろう
      法律はコンピュータ上で実行可能である必要はない。意図とその解釈に関するものなので、テストスイート自体も事実上法律の一部であり、単に法律の中に含めればよい
    • 理論的にはある程度気に入っているが、実際の裁判制度より優れた「テストスイート」を作るのは、文字どおり100%不可能だと思う
    • 法のテストは良いだろうが、おそらくそれを適用するのと同じメカニズムで「評価」する必要がある。つまり裁判所だ
      個人的には、どの国であれ法律そのものに立法趣旨を付けてくれれば満足だ。可能なら、機能しているかを見るための重要業績評価指標も付けるとよい。後になって、その法律が実際に機能しているのか、逆効果になっているのか、主な適用例がそもそもの導入理由と違っているのかを再評価できる
    • 議員が法案を撤回するほど意識的だったとは素晴らしい。Minnesota のような一部の州では、未成年者のセクスティングを実際に積極的に起訴しているようだ
      [1] https://www.aclu.org/news/juvenile-justice/minnesota-prosecu...
  • Greg Bear の本 Moving Mars(1993)には、Legal Logic という名前でこれに似たものが少し登場する。人間の火星人たちが新たに独立した社会の法律を作る際に、AI の助けを借りて使うものだ
    Greg Bear は1年足らず前に亡くなった有名なSF作家で、当時ここでも彼の訃報が議論されていた。私の十代に大きな影響を与えた作家の一人なので、特に 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

  • この言語を説明した論文がある: https://hal.inria.fr/hal-03159939。短い動画要約もある: https://youtu.be/OiaFTFSAa1I

  • プログラマーは、法律に「プログラミング言語」のようなものを使おうと提案するのが好きだ
    しかしこれは、曖昧さがある意味では法律の根本的に重要な部分であることを見落としている。世界そのものが、ある面では根本的に曖昧であり、別の面では明確に分かれているからだ。もちろん、あらゆる種類の曖昧さが望ましいわけではない
    しかし「コードがすなわち法」になると、抜け穴を悪用するやり方はさらに悪化すると思う。実際、多くの法律は細かな実装方法よりも守るべき価値に注力すべきであり、それは本質的に、より明確でなく、より曖昧にならざるを得ない

    • 同意する。悪いアイデアだとは思わないが、完全に定義され、完全に執行可能な法律という発想は恐ろしく感じる。今日存在するすべての法律が完全に執行され、完全に監視され得るなら、私たちの生活はまったく悲惨なものになるだろう
      これが法律の問題なのか執行の問題なのかは議論しないが、いずれにせよ私たちの社会は曖昧さと不均等な執行の上に成り立っている
    • こうしたプロジェクトと曖昧さが衝突する理由はないと思う。concepts セクションの value.fair_market を見ればよい [0]。弁護士たちはその意味をめぐって争えるが、競合する定義もプログラムとして定義できる
      法律への関心は実装の細部よりも結果に向けられるべきだという点には同意する。そのためには新しい法律の結果を測定する評価関数を作る方法が必要であり、Catala のようなシステムは期待される結果をモデル化し、競合する法案の間で選択する助けになり得る。たとえば結果が「汚染を減らしたい」なら、政策は「汚染産業の禁止」かもしれないし、「汚染の外部性への課税」かもしれないが、どちらも複雑な結果を生むので、自動分析と実証的測定のほうがよいだろう
      [0] https://github.com/CatalaLang/catala#concepts
  • コンピューターが法律文言について実際に推論するうえで、大きく解決してくれる問題があるのかはよく分からない。複雑なのは衡平性の比較衡量であり、そこには依然として人間と弁護士が必要だ

    • その通り。ただし税率表からアルゴリズムを作るなら、明確性は助けになるかもしれないし、時には文言が曖昧に見えることもある。おそらく例もかなり大量に必要になるだろう。つまり単体テストが必要というわけだ
    • この言語の利点は一つ見える。税金や給与を計算するプログラムをずっと書きやすくしてくれそうだ。それ以外に何を提供できるのかは分からない
      立法者、弁護士、裁判官の中にこれを期待している人がいるのか、それともプログラマーだけが期待しているのか気になる
    • 「人間、弁護士、そして賄賂」と言いたかったのだと思う
      私たちの法体系をあまり信用していない。なぜ聞くのか分からない
  • カタルーニャ語を話す立場からすると、記事で述べられている言語との名前の衝突は非常に残念に感じる

    • なぜ残念なのか気になる。それにユーザー名が気に入った。その名前を見ただけで、カタルーニャ語を話すだろうと推測した人は多そうだ
  • 名前の選び方が本当に残念だ。プログラミング言語に「français」「Deutsch」、あるいは「English」と名付けるようなものだ
    readme の下のほうには「この言語は Pierre Catala にちなんで名付けられた」とある。むしろ PierreLang に変えることを提案する

    • 「この言語は法学教授 Pierre Catala にちなんで名付けられており、彼は法律事件のコンピューターデータベース Juris-Data を作ってフランスのリーガルテックを切り開いた」とある
      カタルーニャ語のネイティブとして、名前を見てかなり驚いたが、よくある姓なら納得できる