From vaughn@marlin Sat May 11 01:17:22 1991
Received: from june.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA26268; Sat, 11 May 91 01:17:02 -0700
Received: from marlin.cs.washington.edu by june.cs.washington.edu (5.64a/7.0jh)
	id AA01591; Sat, 11 May 91 01:32:53 -0700
Received: by marlin.cs.washington.edu (5.64/7.0cr)
	id AA09592; Sat, 11 May 91 01:32:52 -0700
Date: Sat, 11 May 91 01:32:52 -0700
From: vaughn@marlin
Message-Id: <9105110832.AA09592@marlin.cs.washington.edu>
To: cs473@marlin
Subject: Handout Corrections...
Status: R

There are a couple of minor corrections to the description for "Project 2"
handed out in class Friday:

In part 2) of the instructions, you should type:

  cd ~/ai/prodigy/projects

And in Part 3) type:

  ln -s ~/my-domains/trains

Of course still insert your domain name in place of "trains".

LaTeX has a problem with printing the ~ (tilde) character, so they didn't 
show up in the handout.

Also, for those of you who want to play with the blocksworld Sussman Anomaly,
I have added it to both the blockworld and the frozenblocksworld domains on
coco.  It is the problem named "sa".

Have a good weekend!!

Vaughn

From vaughn@june Sat May 11 01:56:05 1991
Received: from june.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA26460; Sat, 11 May 91 01:55:45 -0700
Received: by june.cs.washington.edu (5.64a/7.0jh)
	id AA02536; Sat, 11 May 91 02:11:36 -0700
Date: Sat, 11 May 91 02:11:36 -0700
From: vaughn@june (Vaughn Iverson)
Message-Id: <9105110911.AA02536@june.cs.washington.edu>
To: cs473@june
Subject: Turning on State Cycles
Status: R

FYI you can tell Prodigy to allow state cycles by typing the following at
the LISP prompt once you've loaded Prodigy:

(setq *ALLOW-REPEATED-STATES* t)

That's it...

Vaughn

From etzioni@chum Sun May 12 17:58:22 1991
Received: from chum.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA18513; Sun, 12 May 91 17:57:56 -0700
Received: by chum.cs.washington.edu (5.64/7.0h)
	id AA25124; Sun, 12 May 91 18:13:48 -0700
Date: Sun, 12 May 91 18:13:48 -0700
From: etzioni@chum (Oren Etzioni)
Message-Id: <9105130113.AA25124@chum.cs.washington.edu>
To: zeno@hardy.u.washington.edu
Cc: cs473@chum
In-Reply-To: King of SPAM's message of Sun, 12 May 91 14:42:02 -0700 <9105122142.AA17477@hardy.u.washington.edu>
Subject: Question.
Status: R

   Date: Sun, 12 May 91 14:42:02 -0700
   From: King of SPAM <zeno@hardy.u.washington.edu>
   To: etzioni@cs.washington.edu
   Subject: Question.


   I'm doing the agricultural thing.  Is there any way
   as an effect, to have some sort of loop?  I'm trying to do scheduling
   of time slices, and the number of time units I'm trying to schedule
   is dependent on what's asserted for growth-time.  IE if it's 1 , I want
   to assert busy (<time>) and if it's 2 I want to assert busy (<time>) as well
   as asserting busy(<time+1>).  is there any way to do this, for an
   arbitrary time?  The only thing I can think of is use conditional effects,
   but you can't really do loops, just a bunch of if statements.

Conditional effects implicitly define a loop.
For example,
(if (smaller <time> <bound>) (add (busy <time>)))

Also, you might use a scheme like the schedworld's
where you write down the last-scheduled time and
then check what's idle.  In fact, that's probably more
elegant because if <bound> is 5,000 you don't have to
add 5,000 (busy...) statements to the state.

The preferred way of "implementing loops" in PRodigy
is recursion, although I can't see right now how to
do what you want using recursion.  Hopefully, someone will correct me
if there's an elegant recursive solution.

oren

From etzioni@chum Sun May 12 18:01:08 1991
Received: from chum.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA18594; Sun, 12 May 91 18:00:50 -0700
Received: by chum.cs.washington.edu (5.64/7.0h)
	id AA25136; Sun, 12 May 91 18:16:42 -0700
Date: Sun, 12 May 91 18:16:42 -0700
From: etzioni@chum (Oren Etzioni)
Message-Id: <9105130116.AA25136@chum.cs.washington.edu>
To: priebe@wolf
Cc: cs473@chum
In-Reply-To: David Priebe's message of Sun, 12 May 91 13:24:31 -0700 <9105122024.AA13076@wolf.cs.washington.edu>
Subject: Campaign domain
Status: R

   Date: Sun, 12 May 91 13:24:31 -0700
   From: priebe@wolf (David Priebe)
   To: etzioni@cs.washington.edu, send@wolf
   Subject: Campaign domain

   I have come up with a list of simplafying assumptions, and I thought I might   run
   them by you, and see if they take too much of the realism out of the domain.
   One is that I can see no way of representing an activly campaining opponent.
   The best I can do is represent a loss of possible support for each location
   that you aren't in.  The second assumption is that I assume that the loss happens on a predictable scale.  The final assumption that seems necessesary is that 
   I cannot take into account random discoveries that might effect the campaign.
   If these seem awful, or heinous, then send mail so I can begin on the next domain.

I think your simplifications are necessary (make sure to mention these in your
discussion!).  Try to find aspects of campaigning that are:
a. unique to your domain (eg scheduling is NOT).
b. can be represented in Prodigy.
and focus on those.

oren

From TBURG@MAX.U.WASHINGTON.EDU Sun May 12 19:58:35 1991
Received: from june.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA21457; Sun, 12 May 91 19:58:09 -0700
Received: from max.u.washington.edu by june.cs.washington.edu (5.64a/7.0jh)
	id AA23763; Sun, 12 May 91 20:14:06 -0700
Date: Sun, 12 May 91 20:13 PDT
From: "Thomas Burg, TBURG@MAX.U.WASHINGTON.EDU" <TBURG@MAX.U.WASHINGTON.EDU>
Subject: start state in two files ?
To: cs473@CS.WASHINGTON.EDU
Message-Id: <77E1C1654A1FA2A118@MAX.U.WASHINGTON.EDU>
X-Envelope-To: cs473@CS.WASHINGTON.EDU
X-Vms-To: IN%"cs473@cs.washington.edu"
X-Vms-Cc: TBURG
Status: R

Does anybody have a smart idea, how to split the start state
in two files, (i.e. one constant, one varying) ?
I am working on this by now, but maybe somebody has a very easy idea...

Thanks

Thomas Burg
 (TB)

From TBURG@MAX.U.WASHINGTON.EDU Sun May 12 20:37:24 1991
Received: from june.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA21772; Sun, 12 May 91 20:36:57 -0700
Received: from max.u.washington.edu by june.cs.washington.edu (5.64a/7.0jh)
	id AA24915; Sun, 12 May 91 20:52:54 -0700
Date: Sun, 12 May 91 20:52 PDT
From: "Thomas Burg, TBURG@MAX.U.WASHINGTON.EDU" <TBURG@MAX.U.WASHINGTON.EDU>
Subject: one more question to the public: "Macros" in Prodigy ?
To: cs473@CS.WASHINGTON.EDU
Message-Id: <77DC56C8733FA2A118@MAX.U.WASHINGTON.EDU>
X-Envelope-To: cs473@CS.WASHINGTON.EDU
X-Vms-To: IN%"cs473@cs.washington.edu"
X-Vms-Cc: TBURG
Status: R

So:
suppose many operators have the same add-list or delete-list
--> is it possible to realize this with a "macro"-command ?
Thanks
TB

From etzioni@chum Sun May 12 20:53:23 1991
Received: from chum.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA21978; Sun, 12 May 91 20:53:02 -0700
Received: by chum.cs.washington.edu (5.64/7.0h)
	id AA25227; Sun, 12 May 91 21:08:58 -0700
Date: Sun, 12 May 91 21:08:58 -0700
From: etzioni@chum (Oren Etzioni)
Message-Id: <9105130408.AA25227@chum.cs.washington.edu>
To: zeno@hardy.u.washington.edu
Subject: Re:  The oddest thing.
Cc: cs473@chum
Status: R

Please mail questions to the entire class.
Binding-list has to be loaded by you.
Snarf it from the schedworld and put it in your functions file.

oren

From etzioni@chum Sun May 12 20:56:48 1991
Received: from chum.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA22014; Sun, 12 May 91 20:56:33 -0700
Received: by chum.cs.washington.edu (5.64/7.0h)
	id AA25236; Sun, 12 May 91 21:12:26 -0700
Date: Sun, 12 May 91 21:12:26 -0700
From: etzioni@chum (Oren Etzioni)
Message-Id: <9105130412.AA25236@chum.cs.washington.edu>
To: TBURG@MAX.U.WASHINGTON.EDU
Subject: Re:  one more question to the public: "Macros" in Prodigy ?
Cc: cs473@chum
Status: R

Prodigy doesn't have such sophisticated capabilities,
but you could write lisp code that would macro-expand into
operators.  Probably the easiest thing to do is to use
emacs's cut and paste capabilities...

oren

From voodoo@hitl.vrnet.washington.edu Sun May 12 23:20:53 1991
Received: from june.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA24681; Sun, 12 May 91 23:20:28 -0700
Received: from hitl.vrnet.washington.edu by june.cs.washington.edu (5.64a/7.0jh)
	id AA28586; Sun, 12 May 91 23:36:26 -0700
Received: by hitl.vrnet.washington.edu
	(NeXT-1.0 (From Sendmail 5.52)/UW-NDC Revision: 2.19 ) id AA03872; Sun, 12 May 91 23:45:02 GMT-0800
Date: Sun, 12 May 91 23:45:02 GMT-0800
From: Geoff Coco <voodoo@hitl.vrnet.washington.edu>
Message-Id: <9105130745.AA03872@hitl.vrnet.washington.edu>
To: TBURG@max.u.washington.edu
Cc: cs473@cs.washington.edu
In-Reply-To: "Thomas Burg, TBURG@MAX.U.WASHINGTON.EDU"'s message of Sun, 12 May 91 20:13 PDT <77E1C1654A1FA2A118@MAX.U.WASHINGTON.EDU>
Subject: start state in two files ?
Status: R

> Does anybody have a smart idea, how to split the start state
> in two files, (i.e. one constant, one varying) ?
> I am working on this by now, but maybe somebody has a very easy idea...

maybe i'm missing some subtlety of your question, but why don't you
just make all your static predicates as lisp functions that also serve
as generators.

for example, instead of your start state looking like:
(object a)
(object b)
(on a b)
(clear a),

you could use an 'object' static generator function,
and your start state would look like:
(on a b)
(clear a).


      ~~
=> voo  doo <=
       \
      |||

From etzioni@chum Mon May 13 13:28:59 1991
Received: from chum.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA03980; Mon, 13 May 91 13:28:40 -0700
Received: by chum.cs.washington.edu (5.64/7.0h)
	id AA25880; Mon, 13 May 91 13:44:28 -0700
Date: Mon, 13 May 91 13:44:28 -0700
From: etzioni@chum (Oren Etzioni)
Message-Id: <9105132044.AA25880@chum.cs.washington.edu>
To: cs473@chum
Subject: [edgar@ms.washington.edu: Students are giving out their accounts to others]
Status: R

The problem described below is an important problem.  If your account gets "deactivated"
which is what they'll do--we will not give you a new account.

oren


   Date: Mon, 13 May 91 13:15:16 -0700
   From: Edgar Nielsen <edgar@ms.washington.edu>
   To: allteach@ms.washington.edu
   Subject: Students are giving out their accounts to others

   Hi,
	   We have found that some of the students using the macintoshes are
   giving their account names and passwords to other people so these people
   can print on our laser printer.  You may remember that we had to set up
   our lab so people had to "login" to our UNIX machines befor they could print
   since so many unauthorized people were printing in our lab.
	   By giving away their accounts, students are letting people get around
   this security system.  These students may also not realize that the
   people they give their account to are also giving it to others!  We are
   keeping track of the number of pages being printed by users to help track
   this problem.
	   Please tell your students to NOT give away their account. This is an
   abuse of the agreement they signed at the start of the quarter.  Students 
   should also be dragging their "Select Me To Print" volumes into the trash
   when they are finished printing, otherwise other students can print with
   their accounts(this doesn't seem to be a problem so far).  When we find
   an account being abused, we have to deactivate it in order to control the
   problem.

   Thanks,
   Edgar Nielsen
   MSCC Staff


From etzioni@chum Mon May 13 20:15:29 1991
Received: from chum.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA12317; Mon, 13 May 91 20:15:02 -0700
Received: by chum.cs.washington.edu (5.64/7.0h)
	id AA26151; Mon, 13 May 91 20:31:02 -0700
Date: Mon, 13 May 91 20:31:02 -0700
From: etzioni@chum (Oren Etzioni)
Message-Id: <9105140331.AA26151@chum.cs.washington.edu>
To: tadorman@wolf
Cc: cs473@chum
In-Reply-To: Douglas Orman's message of Mon, 13 May 91 20:04:01 -0700 <9105140304.AA12179@wolf.cs.washington.edu>
Subject: Where's HW solutions?!
Status: R


   Well I'm dying to know the solution why INFER-ARM-EMPTY is bad since 
   it may solve a question I have for the project.

It's a non-static generator.

   So, will prodigy subgoal on (holding <ob>) if it doesn't find it in
   the state?  THIS IS IMPORTANT TO ME!!  

Why don't you run a little experiment? (I believe the answer is no,
but you might want to double check).

   I am having a great deal of difficulty with non-static predicates and 
   figuring out how to test for there existence WITHOUT SUBGOALING!  You
   mentioned a hack in class using a control rule and something about
   using KNOWN but I don't get it... page 27 in book doesn't help.

Using a control rule is not a hack.  The following control rule makes sure that
pick-up never subgoals on its on-table precondition.  You should be
able to adapt it to prevent subgoaling (without using non-static
generators) in most cases.

(|sr18|
  (LHS
   (AND (CURRENT-NODE <V31>) (CURRENT-GOAL <V31> (HOLDING <B4>))
        (CANDIDATE-OP <V31> PICK-UP)
        (KNOWN <V31> (~ (ON-TABLE <B4>)))))
  (RHS (REJECT OPERATOR PICK-UP)) 

From etzioni@chum Mon May 13 20:35:38 1991
Received: from chum.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA12635; Mon, 13 May 91 20:35:19 -0700
Received: by chum.cs.washington.edu (5.64/7.0h)
	id AA26162; Mon, 13 May 91 20:51:16 -0700
Date: Mon, 13 May 91 20:51:16 -0700
From: etzioni@chum (Oren Etzioni)
Message-Id: <9105140351.AA26162@chum.cs.washington.edu>
To: etzioni@chum
Cc: tadorman@wolf, cs473@chum
In-Reply-To: Oren Etzioni's message of Mon, 13 May 91 20:31:02 -0700 <9105140331.AA26151@chum.cs.washington.edu>
Subject: Where's HW solutions?!
Status: R

   Date: Mon, 13 May 91 20:31:02 -0700
   From: etzioni (Oren Etzioni)
   To: tadorman@wolf
   Cc: cs473
   In-Reply-To: Douglas Orman's message of Mon, 13 May 91 20:04:01 -0700 <9105140304.AA12179@wolf.cs.washington.edu>
   Subject: Where's HW solutions?!


	  Well I'm dying to know the solution why INFER-ARM-EMPTY is bad since 
	  it may solve a question I have for the project.

   It's a non-static generator.

	  So, will prodigy subgoal on (holding <ob>) if it doesn't find it in
	  the state?  THIS IS IMPORTANT TO ME!!  

   Why don't you run a little experiment? (I believe the answer is no,
   but you might want to double check).

Note that Prodigy does subgoal on (~ (holding <ob>)) [but presumably
it wouldn't subgoal on (holding <ob>) since that's the generator.]


Also note, that it WILL subgoal on the generator if (as you write) it
doesn't find it in the state.  It only doesn't subgoal on a generator
ONCE IT HAS BEEN MATCHED (ie an instance has been found in the state,
but it doesn't satisfy other subgoals).  Confusing stuff.  I'll talk
about this in class again.

oren

From etzioni@chum Tue May 14 09:06:14 1991
Received: from chum.cs.washington.edu by wolf.cs.washington.edu (5.64/7.0jh)
	id AA17037; Tue, 14 May 91 09:05:54 -0700
Received: by chum.cs.washington.edu (5.64/7.0h)
	id AA26597; Tue, 14 May 91 09:21:53 -0700
Date: Tue, 14 May 91 09:21:53 -0700
From: etzioni@chum (Oren Etzioni)
Message-Id: <9105141621.AA26597@chum.cs.washington.edu>
To: johnc@cac.washington.edu
Cc: cs473@chum
Subject: Important Issues!
Status: R

   From: John Carlson <johnc@cac.washington.edu>
   Subject: brew domain 
   To: etzioni@cs.washington.edu
   Date: Mon, 13 May 91 21:49:43 PDT
   X-Mailer: Pine [version 0.9.701]

   Oren,
	   In the initial state, there is some equipment which must be
   sanitized.  I have operators which perform this process.  My problem is
   getting all the equipment sanitized (or purified) without explicitly
   stating so in the goal.  Below is an example of a toy operator which I've
   been testing with.  I have 3 pieces of equipment in the initial state, but
   the operator below will only process the first one in the initial state.
   The way I read the p.12 of the manual, this operator should take all
   <ob>'s which are equipment (as a generator) and subgoal until each is 
   purified.  What's wrong with this picture?



   (SANIT-EQUIP
	(params (<ob>))
	(preconds
			 (FORALL (<ob>) (equip <ob>) (purify <ob>)))
	(effects ((add (purify-equip <ob>)))))


Good question!
Since <ob> appears in the effect, it is NOT universally
quantified over in the preconditions.  The solution to your problem is
to remove <ob> from the effect getting:

   (SANIT-EQUIP
	(params (<ob>))
	(preconds
			 (FORALL (<ob>) (equip <ob>) (purify <ob>)))
	(effects ((add (purify-equip)))))

Then the operator will do what you want.


oren

NOTE: I don't see why sanitizing all the equipment should be a top-level
goal.  If having sanitary equipment is a precondition to every
operator that uses equipment, then the appropriate equipment will
"automatically" get sanitized before it's used.  The advantages are:
a. you won't sanitize equipment that doesn't get used.
b. Sanitizing always happens before use.  If you put (purify-equip) as
a top-level goal then Prodigy might decide to achieve this goal LAST.



