  Logic rules are powerful for expressing complex reasoning and analysis
problems. At the same time, they are inconvenient or impossible to use for many
other aspects of applications. Integrating rules in a language with sets and
functions, and furthermore with updates to objects, has been a subject of
significant study. What's lacking is a language that integrates all constructs
seamlessly.
  This paper presents a language, Alda, that supports all of rules, sets,
functions, updates, and objects as seamlessly integrated built-ins, including
concurrent and distributed processes. The key idea is to support predicates as
set-valued variables that can be used and updated in any scope, and support
queries and inference with both explicit and automatic calls to an inference
function. We develop a complete formal semantics for Alda. We design a
compilation framework that ensures the declarative semantics of rules, while
also being able to exploit available optimizations. We describe a prototype
implementation that builds on a powerful extension of Python and employs an
efficient logic rule engine. We develop a range of benchmarks and present
results of experiments to demonstrate Alda's power for programming and
generally good performance.
