SMTLIB as a Compiler IR I
Exploring the use of SMT solvers and the SMT-LIB language as an intermediate representation (IR) for compiler design and optimization.
Philip Zucker is a physics and computer science enthusiast documenting ideas and experiments in a lab-notebook-style blog, focused on functional programming, compilers, formal methods, and scientific computation.
11 articles from this blog
Exploring the use of SMT solvers and the SMT-LIB language as an intermediate representation (IR) for compiler design and optimization.
Introducing a Python library for seamless interoperability with the Lean theorem prover, allowing Lean functions to be called directly from Python code.
An exploration of Ground Lexicographic Path Ordering (LPO) for term rewriting systems, including a Python implementation and property tests.
Explores generalizing term operations like unification and rewriting to advanced structures like AC terms and rational terms, with Python examples.
Explores contextual union finds for rewriting under assumptions in egraph systems, comparing dense and sparse implementations.
A developer's enthusiastic recap of a specialized workshop on egraphs and compilers, covering technical discussions, potential collaborations, and project ideas.
Explores combining SMT solvers CVC5 and Z3 using the Nelson-Oppen method, focusing on theory combination and purification.
Explores asymmetric completion, a union-find algorithm variant for inequality reasoning, with Python implementation insights.
Introducing a Lean-like syntax parser for the Knuckledragger theorem prover to improve formula readability over verbose Python/Z3Py syntax.
Exploring a semi-interactive proof system for verifying assembly code using Python, Z3, and Ghidra Pcode.
A technical exploration of building a toy DPLL SAT solver in Python, discussing its implementation and relation to SMT solvers.