概要 Egisonのパターンマッチの動作を定理証明支援系Coq上で定義し、「Egisonの処理系が項Mを値vに評価する」という命題をCoq上で表現できるようにしました。 動機 Egisonの中核的な機能はユーザが拡張可能なパターンマッチ機構です。例えば以下に示すように、ペアに対してその順序を無視してパターンマッチすることが可能です。 (define $unordered-pair (matcher {[<pair $ $> [something something] {[[$x $y] {[x y] [y x]}]}] [$ something {[$tgt {tgt}]}]})) (match-all [1 2] unordered-pair {[<pair $a $b> [a b]]}) ; ===> {[1 2] [2 1]} しかし、その拡張性のためにこのパターンマッチの動作は大変
![formalized-egison -- Egisonの型安全性の証明に向けて - a_kawashiroのブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/01e7ad82235b18e4e2aa8908ed28cf5f0a21df86/height=288;version=1;width=512/https%3A%2F%2Fraw.githubusercontent.com%2Fakawashiro%2Fformalized-egison%2Fmaster%2Fsemantics.png)