FWIW, there's this paper that "[takes] a fresh, 'clean-room' look at implementing Prolog by deriving its translation to an executable representation and its execution algorithm from a simple Horn Clause meta-interpreter."
"A Hitchhiker’s Guide to Reinventing a Prolog Machine" Paul Tarau
https://www.cse.unt.edu/~tarau/research/2017/eng.pdf
Slides: https://software.imdea.org/Conferences/CICLOPS2017/files/tar...
They're not that complex. I'm writing one from scratch right now:
http://github.com/mthom/scryer-prolog
Speaking of constraint solvers, the author of Power of Prolog, Markus Triska, is now in the process of porting his clp(ℤ) constraint solver over to my system, having already ported his boolean constraint solver, clp(B). They are quite complex, but it helps that they're written entirely in Prolog.