核心概念
本文介紹了 CUTECat,這是一個針對運算法律領域特定語言 Catala 開發的符號執行測試工具,旨在解決法律專家系統中潛在的錯誤,並確保其與法律條文的相符性。
本文介紹了 CUTECat,這是一個針對運算法律領域特定語言 Catala 開發的符號執行測試工具。運算法律,例如稅務計算或社會福利資格判定,通常由專家計算機程序執行,這些程序旨在將法律條文忠實地轉錄為計算機代碼。然而,這些程序中的錯誤可能會導致嚴重的社會影響,例如向員工支付錯誤的金額,或沒有將福利發放給有需要的家庭。
為了應對這一問題,本文探討了符號執行測試,這是一種將具體執行與基於 SMT 的符號執行相結合的技術,並提出了 CUTECat,這是一個針對運算法律實現的符號執行工具。運算法律通常遵循一種模式,即基本情況在後續的法律條款中會被許多例外情況所完善,這種模式可以使用默認邏輯進行形式化建模。本文展示了如何在符號執行工具中處理默認邏輯,並在 Catala 的上下文中實現了我們的方法,Catala 是一種最近出現的專用於實現運算法律的領域特定語言。
我們在幾個程序上評估了 CUTECat,包括法國住房福利和美國稅法第 132 條的 Catala 實現。結果表明,CUTECat 可以成功生成數十萬個測試用例,涵蓋了這些法律主體的所有分支。通過幾種啟發式方法,我們提高了 CUTECat 的可擴展性和可用性,使測試用例對律師和程序員來說都易於理解。我們相信,CUTECat 為在立法過程中使用形式化方法鋪平了道路。
運算法律通常包含一個基本情況和多個條件例外,例如稅收計算中的基本稅率和針對低收入戶或多子女家庭的稅收減免。使用傳統編程語言實現這種結構具有挑戰性,因為法律文本中的例外情況通常分散在多個法律條款中,這與標準的整體變量或函數定義不符。此外,法律的實現應該與其所依據的法律文本的結構緊密匹配,任何差異都相當於法律的重新詮釋,這應該由律師而不是程序員來執行。
為了應對這一問題,默認邏輯被引入到運算法律的實現中。默認邏輯允許程序員以與法律文本的結構相匹配的方式定義基本情況及其相應的例外情況。