Simple E-unification for second-order syntax.
This is an experimental project, attempting to implement a generic unification procedure in presence of second-order equalities a la Fiore [1]. The idea is to make it powerful enough to get higher-order unification "for free" for a given language provided its 2nd-order syntax description and rewrite rules, and then use it for type inference for dependent type theories. A more obscure version of this approach has been implemented in an experimental rzk proof assistant and described in [2]. Implementation here corresponds more with the version presented at UNIF-2022 workshop [3].
This is active work-in-progress and may contain bugs and performance issues.
The project is developed with both Stack and Nix (for GHCJS version).
For quick local development and testing it is recommended to work with a GHC version, using Stack tool. Clone this project and simply run stack build:
git clone [email protected]:fizruk/simple-topes.git
cd simple-topes
stack build[1] Marcelo P. Fiore, Ola Mahmoud (2013). Second-Order Algebraic Theories. CoRR, abs/1308.5409
[2] N. Kudasov. Functional Pearl: Dependent type inference via free higher-order unification. abs/2204.05653
[3] N. Kudasov. Higher-order unification from E-unification with second-order equations and parametrised metavariables. UNIF-2022 https://easychair.org/smart-program/FLoC2022/UNIF-2022-08-12.html#session:62460