With the logic described above one can represent standard procedures, as well as general policies and constraints in an uniform way. Let us assume the workflow described in figure 1. It is a simple procedure that uses the standard flow connectors [3,8]: and-split and and-join are represented by the empty circles, the or-split and or-joint are represented by the filled circles, activities are represented as squares and sequencing by the edges connecting activities.

That procedure can be represented as:

Formula 1 states that if

But the formulas above only state the precedence relation among the
activities, but not the fact that they should happen. To state that,
one need the ``dual'' of the formulas above:

The or-split is not yet represented in the formulas above. To
represent it, we will need two auxiliary propositional symbols *t*_{1}and *t*_{2}. The issue with the or-split is that a) first it is not an
*or*-split but an *exclusive-or*-split b) second, the
choice implicit in the or-split is a choice of commitment to a
particular branch, either the one that starts with *b* or the other
one, that goes directly to *g*. Thus we will need the auxiliary
propositional symbol to represent each branch.

Formula 11 states that after

Policies can also be represented. For example, let us suppose that an
organization has the policy that all meetings must be preceded by a
call for that meeting with at least 3 time moments before the meeting
(say, to comply with the organization's quality standards). That
policy can be represented by the logic expression:

where

Using logic it is possible to state some special properties of
activities. For example, in business applications it is common to have
activities that cannot be reexecuted, such as, ship merchandise to
customer, or pay bill. The fact that an activity *p* cannot be redone,
can be stated as:

That is, if

If an activity *q* can only be redone if a compensating activity *r*is executed, that can be stated as:

The formula states that if