6 ms·
A Couple of Meta-Interpreters in Prolog
- YeGoblynQueenne 8y agoI know this is not the done thing, but a meta-interpreter is the best, easiest, simplest way I've found to explain resolution (for maximum impact, you can trace a program through the meta-interpeter so the other person gets to see what's going on). And if I can be allowed a shamless plug of my research team's work, it's also possible to turn a meta-interpreter to an inductive learning procedure, so that you can generate a new program from examples of its inputs and outputs, even as you prove it. It's called Meta-Interpetive Learning: https://github.com/metagol/metagol https://github.com/metagol/metagol
- mycl 8y agoSorry to be rude, but could you ask/beg Prof Muggleton to write a book on ILP and/or meta-interpretive learning? Something like an expanded version of his outline webpage (https://www.doc.ic.ac.uk/~shm/ilp_theory.html https://www.doc.ic.ac.uk/~shm/ilp_theory.html). My go-to for trying to understand ILP theory is Nienhuys-Cheng and de Wolf, _Foundations of Inductive Logic Programming_ and De Raedt's _Logical and Relational Learning_ is a more up-to-date overview, but I feel like there's room for a more modern textbook. This new MIL stuff seems to be be an important unifying idea that also connects back to abductive logic programming, if I understand correctly. Just a request; no offence intended!
- YeGoblynQueenne 8y agoNot rude at all! There are precious few textbooks on ILP, it's mostly a bunch of scattered papers published in various journals and conferences. Nienhuys-Cheng and de Wolf are an excellent first point of call. You can also try the following books: Logical and Relational Learning - Luc de Raedt [https://www.amazon.com/Logical-Relational-Learning-Cognitive-Technologies/dp/3642057489 https://www.amazon.com/Logical-Relational-Learning-Cognitive...] Probabilistic Inductive Logic Programming, Theory and applications - Luc de Raedt, Paolo Frasconi, Kristian Kersting, Stephen Muggleton [https://www.amazon.com/Probabilistic-Inductive-Programming-Lecture-Computer/dp/3540786511 https://www.amazon.com/Probabilistic-Inductive-Programming-L...] And this book chapter (although it's probably nothing new compared to Foundations of ILP): Inductive Logic Programming: Theory and Methods - Stephen Muggleton and Luc de Raedt https://www.sciencedirect.com/science/article/pii/0743106694900353 https://www.sciencedirect.com/science/article/pii/0743106694... Unfortunately, there are, as of yet, no textbooks on Meta-Interpretive Learning and I don't expect there to be one for a few years still. MIL is a very new area of research. The first papers were published only in 2015 and we are basically still working on it furiously. It will take a while before there is enough material for a textbook. All the same, I am planning to do a few internet postings regarding MIL, at some point in the near future. Please feel free to contact me via my profile email, if you would like some pointers to MIL and more general ILP resources other than the ones discussed above.
- mycl 8y agoThanks for the pointers! I look forward to your postings.
- triska 8y agoThank you very much for the publicity, I greatly appreciate it! Prolog is rather unique in that it admits a meta-interpreter in roughly 3 lines of code. Contrast this with other languages, where writing an evaluator typically takes much more code, even for quite high-level languages. This brevity is possible mainly because Prolog - like Lisp and assembly language - is a homoiconic language, and in addition to that, Prolog has powerful built-in mechanisms that can be used in interpreters, and in addition to that, Prolog variables on the object-level (the program to be interpreted) are also variables on the meta-level (the interpreter). As a consequence, Prolog's implicit mechanisms can be absorbed in interpreters: They need not be encoded explicitly. Enjoy!
- fusiongyro 8y agoThe three or so times I've needed to build a metainterpreter, I have always referred back to your page for help, so thanks for taking the time to make it! It's greatly appreciated!
- YeGoblynQueenne 8y agoToo true, I've had to write a good few meta-interpreters in the last nine months or so and Markus' page is permanently open in a tab in my browser :)
- agumonkey 8y agoany favorite websites / book about this topic ? thanks for writing this