  Logic rules and inference are fundamental in computer science and have been
studied extensively. However, prior semantics of logic languages can have
subtle implications and can disagree significantly, on even very simple
programs, including in attempting to solve the well-known Russell's paradox.
These semantics are often non-intuitive and hard-to-understand when
unrestricted negation is used in recursion.
  This paper describes a simple new semantics for logic rules, founded
semantics, and its straightforward extension to another simple new semantics,
constraint semantics, that unify the core of different prior semantics. The new
semantics support unrestricted negation, as well as unrestricted existential
and universal quantifications. They are uniquely expressive and intuitive by
allowing assumptions about the predicates, rules, and reasoning to be specified
explicitly, as simple and precise binary choices. They are completely
declarative and relate cleanly to prior semantics. In addition, founded
semantics can be computed in linear time in the size of the ground program.
