4 ms·
Inductive Logic Programming: Techniques and Applications (1994) [pdf]
- vmorgulis 11y agoAbout Prolog and Expert Systems, I recently discovered rule-based programming. It is used in text mode games (http://eblong.com/zarf/essays/rule-based-if/index.html http://eblong.com/zarf/essays/rule-based-if/index.html).
- beshrkayali 11y agoHaven't heard of Inform 7 before! Looks pretty interesting! Thank you for sharing.
- vmorgulis 11y agoYou're welcome. I like the properties of "flat structures" (like in state machines, pipes or even IFTTT). They can be journalized, visualized as matrices or optimized easily.
- nickpsecurity 11y agoI'm sure it's an interesting book. My experience with logic programming, though, is that functional or high-level imperative programming are just easier to do real-world apps with. Anyone wanting to take a stab at logic programming might want to try Mercury [1], the most practical one. A common approach from AI days was implementing Prolog in a more complete language where you could use either depending on benefits. Allegro CL does this [2]. [1] https://en.wikipedia.org/wiki/Mercury_%28programming_language%29 https://en.wikipedia.org/wiki/Mercury_%28programming_languag... [2] http://franz.com/products/allegro-common-lisp/acl_prolog.lhtml http://franz.com/products/allegro-common-lisp/acl_prolog.lht...
- abecedarius 11y agoThis is about machine learning, only instead of inducing things like neural network weights, it's inducing a logic program. I get the impression most of the work in this field gets called 'program synthesis' these days, though I haven't kept up.
- nickpsecurity 11y agoAhh, the parts I read make more sense now that you told me the goal. I did do work in program synthesis, although we called it "automatic programming." Best of it is in ASIC development right now. I'm keeping this just because you said that. Might help someone working in the field who asks what resources I have on that topic.
- vmorgulis 11y agoThere is "sketching". The idea is to write a partial program and use wildcards for the parts you are not sure of. For example, you can replace values on loops by a "%". The tool try to find the best program for a given input. https://bitbucket.org/gatoatigrado/sketch-frontend/wiki/Tutorial https://bitbucket.org/gatoatigrado/sketch-frontend/wiki/Tuto... Superoptimisation is also related to program synthesis. It's a fascinating subject. Peter Norvig did a talk about what we can expect with that.
- nickpsecurity 11y agoThat's awesome stuff! Thanks for the link. I'll have to do some more research on this stuff.
- vmorgulis 11y agoI like that too :-) About superotimisation, the most visible person is John Regehr. He works with LLVM with his students. http://blog.regehr.org/archives/1246 http://blog.regehr.org/archives/1246
- nickpsecurity 11y agoI'll keep an archive of that just in case. The approach described doesn't seem right, though. My old AI work suggested the best approach to this problem may be combination of these: patterns for common design specs and their implementations; constraints and constraint solving techniques for narrowing things down; heuristics for optimizations and unusual implementation situations. You give bare-bones of the design with some declarations about calling-convention, safety, ranges, data structures, and so on. The software fills in the blanks. Easier to describe than to do. Yet, there are already tool-sets that auto-generate a lot of code and you could say functional language compilers do that to a large degree. Could start with them and just add smarts/constraints. I'm sure there's people doing that right now somewhere.
- lgas 11y agoClojure's core.logic would be another good example.
- nickpsecurity 11y agoNeat that it has it!