[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"branding":3,"analytics":7,"article-new-python-framework-speeds-up-prolog-program-synthesis":10,"sections":35},{"siteName":4,"siteTagline":5,"publisherName":4,"contactEmail":6},"The Revision","Tech news, decoded.","editor@therevision.news",{"gaMeasurementId":8,"adsenseClientId":9},"G-ZW2MV82GYR","ca-pub-8533917693782264",{"article":11},{"id":12,"slug":13,"title":14,"dek":15,"body_md":16,"tags_json":17,"published_at":18,"created_at":19,"updated_at":20,"status":21,"review_note":22,"review_notes":23,"image_url":22,"persona_id":22,"persona_name":22,"section":24,"tags":25,"sources":30,"feedback":34,"feedback_at":22,"cost_usd":34,"total_tokens":34},10048,"new-python-framework-speeds-up-prolog-program-synthesis","New Python Framework Speeds Up Prolog Program Synthesis","WAMpy compiles Prolog clauses into NumPy-based instructions and speeds up program synthesis with Numba JIT, beating SWI-Prolog's Janus bridge in benchmarks.","A new Python framework called WAMpy speeds up the tedious work of writing Prolog programs automatically.\n\nResearchers built WAMpy, a system that compiles Prolog clauses into NumPy array-based instructions for the Warren Abstract Machine, the standard execution model for Prolog. It's built for a specific job: generating and testing many small candidate programs against a fixed set of background rules, then evaluating which ones work - a process called program synthesis. The framework uses Numba's just-in-time compiler to speed up the performance-critical parts, and it supports partial recompilation so it doesn't have to rebuild everything from scratch each time a hypothesis changes. In benchmarks of repeated compile-and-evaluate cycles, WAMpy outperformed SWI-Prolog, the most widely used Prolog implementation, accessed through Python via its Janus interface.\n\nProgram synthesis - having software write other software by trial and error - lives or dies on how fast you can generate and discard bad candidates. General-purpose Prolog systems like SWI-Prolog were built to run one program well, not to be restarted thousands of times a second, so the overhead adds up fast in search-heavy synthesis loops. WAMpy's targeted redesign suggests that purpose-built tooling for narrow but repetitive AI workloads - rather than retrofitting general tools - stays the more reliable path to speed.\n\nIt's a plumbing improvement, not a new idea, but search-based synthesis is only as good as the plumbing underneath it.","[\"prolog\",\"program-synthesis\",\"python\",\"numba\"]","2026-10-05T04:00:00.000Z","2026-10-05T20:15:00.100Z","2026-10-05T20:15:04.979Z","published",null,[],"dev-tools",[26,27,28,29],"prolog","program-synthesis","python","numba",[31],{"name":32,"url":33},"arXiv cs.AI","https:\u002F\u002Farxiv.org\u002Fabs\u002F2610.03234",0,{"sections":36},[37,41,45,50,55,60,64,69,72,77,82,87,92,97],{"name":38,"slug":39,"count":40,"latest_published_at":18},"AI","ai",6289,{"name":42,"slug":43,"count":44,"latest_published_at":18},"Security","security",869,{"name":46,"slug":47,"count":48,"latest_published_at":49},"Policy","policy",444,"2026-10-03T15:02:01.000Z",{"name":51,"slug":52,"count":53,"latest_published_at":54},"Deals","deals",323,"2026-10-04T13:00:00.000Z",{"name":56,"slug":57,"count":58,"latest_published_at":59},"Hardware","hardware",204,"2026-10-03T14:50:50.000Z",{"name":61,"slug":62,"count":63,"latest_published_at":18},"Science","science",178,{"name":65,"slug":66,"count":67,"latest_published_at":68},"Consumer Tech","consumer-tech",158,"2026-10-03T03:21:12.000Z",{"name":70,"slug":24,"count":71,"latest_published_at":18},"Dev Tools",98,{"name":73,"slug":74,"count":75,"latest_published_at":76},"Software","software",97,"2026-10-04T10:00:00.000Z",{"name":78,"slug":79,"count":80,"latest_published_at":81},"Startups","startups",92,"2026-10-04T14:36:25.000Z",{"name":83,"slug":84,"count":85,"latest_published_at":86},"Gaming","gaming",53,"2026-10-02T02:50:39.000Z",{"name":88,"slug":89,"count":90,"latest_published_at":91},"General","general",51,"2026-10-05T02:35:01.000Z",{"name":93,"slug":94,"count":95,"latest_published_at":96},"Reviews","reviews",32,"2026-10-02T18:00:00.000Z",{"name":98,"slug":99,"count":100,"latest_published_at":101},"How-To","how-to",7,"2026-10-01T09:00:00.000Z"]