Programming in logic without logic programming
Robert Kowalski, Fariba Sadri · Theory and Practice of Logic Programming · 2016
Abstract In previous work, we proposed a logic-based framework in which computation is the execution of actions in an attempt to make reactive rules of the formif antecedent then consequenttrue in a canonical model of a logic program determined by an initial state, sequence of events, and the resulting sequence of subsequent states. In this model-theoretic semantics, reactive rules are the driving force, and logic programs play only a supporting role. In the canonical model, states, actions, and other events are represented with timestamps. But in the operational semantics (OS), for the sake of efficiency, timestamps are omitted and only the current state is maintained. State transitions are performed reactively by executing actions to make theconsequentsof rules true whenever theantecedentsbecome true. This OS is sound, but incomplete. It cannot make reactive rules true by preventing theirantecedentsfrom becoming true, or by proactively making theirconsequentstrue before theirantecedentsbecome true. In this paper, we characterize the notion of reactive model, and prove that the OS can generate all and only such models. In order to focus on the main issues, we omit the logic programming component of the framework.