Lix: A self-applicable partial evaluator for Prolog
Lix is a self-applicable partial evaluator for a considerable subset of full Prolog. The partial evaluator can achieve non-trivial specialisation and be effectively self-applied. The attempts to self-apply partial evaluators for logic programs have, of yet, not been all that successful. Compared to earlier attempts, the lix system is practically usable in terms of efficiency and can handle natural logic programming examples with partially static data structures, built-ins, side-effects, and some higher-order and meta-level features such as call and findall. The lix system is derived from the development of the logen compiler generator system.
Link to FLOPS'2004 paper: https://link.springer.com/chapter/10.1007%2F978-3-540-24754-8_8