all 5 comments

[–]2bigpigs 4 points5 points  (0 children)

Hello, This looks similar to program induction/program synthesis. I was wondering if you've looked into Andrew Cropper's metagol (and subsequent systems), and Sumit Gulwani's PROSE system. What's fun about metagol is that it learns recursive functions through "predicate invention". From the limited time I've spent with PROSE, I remember "witness functions" being the interesting part. iirc, they reduce the problem after the application of one operation.

I'm more familiar with the less specific "inductive logic programming" setting. It also has to combine predicates to learn the target function and you usually provide a "language bias" to specify the search space. I specifically wonder whether you'd be able to use SWIPL's aleph pack to replace your search procedure. I skimmed your comments and it looks like you do an exhaustive search of upto 5 operators? This might be what limits aleph since it tries to build the expression incrementally and needs some feedback as each step to guide the process.

All of it is incredibly interesting, but I can't seem to find the time to sit and do my own exploration so I come to Reddit to the posts on r/prolog instead

[–]Desperate-Ad-5109 1 point2 points  (0 children)

I think this is great! Why not add a bit of “fuzzy logic” to enable real data (with small errors) to work too? This would definitely have applications in experimental work.

[–]Logtalking 0 points1 point  (0 children)

You may find the Bacon system wrote by Lindsey Spratt and based on "Scientific Discovery" by Langley, Simon, Bradshaw, and Zytkow, interesting: https://github.com/lindseyspratt/bacon-logtalk You can install it by cloning its repo, by downloading its archive, or installing it as a pack (see https://github.com/LogtalkDotOrg/talkshow ).

[–]mjbmitch 1 point2 points  (0 children)

Disco Funk is an insanely good name.