This paper presents a language, Alda, that supports all of logic rules, sets,
functions, updates, and objects as seamlessly integrated built-ins. The key
idea is to support predicates in rules as set-valued variables that can be used
and updated in any scope, and support queries using rules as either explicit or
implicit automatic calls to an inference function.
We have defined a formal semantics of the language, implemented a prototype
compiler that builds on an object-oriented language that supports concurrent
and distributed programming and on an efficient logic rule system, and
successfully used the language and implementation on benchmarks and problems
from a wide variety of application domains. We describe the compilation method
and results of experimental evaluation.Comment: To be published in Theory and Practice of Logic Programming, Special
issue for selected papers from 39nd International Conference on Logic
Programming. arXiv admin note: substantial text overlap with arXiv:2205.1520