In: Software Practice and Experience, Vol. 28, No. 13, pages 1415-1435. 1998.
Abstract: The paper proposes an enrichment of the Prolog language based on the introduction of explicit notions of state variables and, most notably, of actions. The extended language, called co-notation, supports the formal, executable description of a wide variety of systems in a so-called `constraint-oriented style': system behaviors are described as hierarchical compositions of constraints on actions and state variables. Elementary constraints include state invariants, referring to one or more state variables, and `active predicates', involving one action and zero or more state variables. Compound constraints are encapsulated compositions of elementary and/or compound variables, and represent partial views about the system behavior. Explicit action ordering constraints are represented as Petri nets. Constraint composition is also reminiscent of process composition in process algebra, but encompasses interaction both by rendezvous and by shared variables.
Keywords: PROLOG, Petri nets, formal specification, process algebras, requirements capture.