W3C home > Mailing lists > Public > www-ws@w3.org > September 2003

Re: Preconditions /effects vs Preconditions/Postconditions

From: Michael Kifer <kifer@cs.sunysb.edu>
Date: Wed, 17 Sep 2003 01:32:25 -0400
To: Drew McDermott <drew.mcdermott@yale.edu>
Cc: www-ws@w3.org
Message-id: <20030917053226.D64A31133C5@kiferserv.kiferhome.com>

Drew McDermott wrote:
> At the risk of being pedantic ...
>    [Michael Kifer]
>    There is a clear distinction between effects and postconditions.
>    An effect is what the action *does*.
>    A postcondition is a constraint that says what must hold after the action
>    executed or else the action should be aborted and its effects undone. This
>    constraint represented by the postcondition can be partial.
> I've never heard the terms used that way before.  Sometimes the phrase
> "safety conditions" is used (e.g., in PDDL 1.0), to mean roughly what
> you call "postconditions."  (Well..., safety conditions are supposed
> to hold in all situations, and postconditions just in situations after
> a certain action.)
> In the field of proving program properties, "postcondition" is used to
> mean what's true after a statement given that something else is true.
> Usually the inference is regressive (from effects to causes).  E.g, if
> postcondition x>5 is true after x := x +1, then the weakest
> precondition that would guarantee that is x > 4.
> That's pretty close to what the planning community means by "effect."

Well, this definition of a postcondition (in program verification) is not
that much different from mine.  The difference is that in one case
postconditions are being proved and in another they are used as
constraints. In databases, integrity constraints on the after-state of a
transaction are often called postconditions.  (If such constraints are not
satisfied, the transaction is rolled back.)

The important similarity between both cases is that they are predicates and
they are evaluated in the after-state only.

Even in programming logic, the reason why you want to prove a postcondition
on a program (assuming a precondition is true) is because you want the
postcondition to be true in the resulting state (otherwise the program is
deemed not to be correct). That is, even here the postcondition is
ultimately viewed as a constraint. (Of course, there can be other uses for
such proofs. I am just pointing out the similarities of some of these uses
to my terminology.)

The particular classification that I mentioned in my msg comes from the use
of these terms in Transaction Logic. I also remember discussing these
things with Ray Reiter about 10 years ago, when we first developed
Transaction Logic, and we didn't have terminological disagreements on that

> However, I'm not entirely happy with saying that 
> effects/postconditions are propositions.  They have the same syntactic
> form, and, for pragmatic reasons, the same type (Boolean? or something
> slightly hairier).  But effects differ from preconditions in certain
> ways.  For instance, in PDDL the effect (when p e) means that if
> proposition 'p' is true before the action, then effect 'e' is imposed
> after.  Note that I use the phrase "is imposed" rather than "is true."
> It's not clear in what sense (when p e) is true *after* an action; two
> situations must be taken into account.  (In DAML-S, instead of 'when' we
> have conditional effects.)
> One can also argue that (not q) as an effect has a different semantics
> from (not q) as a proposition.  There have been lots of variations on
> the theme, but the basic idea is that (not q) is imposed by changing
> the model of the current situation "just enough" to make 'q' false.

I didn't say that effects are propositions. Well, they *can* be, but there
is a big difference. The "effect" is the change that is made to the
theory. I.e., inserted facts, deleted facts, other deleted/inserted
formulas, etc. They are things that are made true or false -- i.e., they
are "imposed," as you put it.  While pre and post conditions are simply
checked. So, I don't see any difference between our views on that point.

Received on Wednesday, 17 September 2003 01:31:27 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:05:12 UTC