This is the domain definition of D1-use-once.
Action A-i can only be used to achieve one goal.

______________________________________________________________

Example with i=3:

(OPERATOR A3
  (params <goal>)
  (preconds
   ((<goal> GOAL))
   (i3))
  (effects
   ()
   ((add (done <goal>))
    (del (i3)))))
______________________________________________________________

Example problem:

(setf (current-problem)
      (create-problem (name test1)
		      (objects
		       (g1 g2 g3 g4 g5 goal))
		      (state
		       (and (i1) (i2) (i3) (i4) (i5)))
		      (goal (and (done g2) (done g3) (done g4) 
				 (done g1) (done g5)))))
______________________________________________________________

Domain definition:

(create-problem-space 'art-wait-state :current t)

(defvar *number-a-ops* 15
  "Size parameter for the synthetic domain D1-use-once")

(defun make-sym (prefix number)
  (let ((*print-case* :upcase))
    (intern (format nil "~S~D" prefix number))))

(ptype-of GOAL :top-type)

(dotimes (i *number-a-ops*)
  (eval
   `(operator ,(make-sym 'A (1+ i))
	      (params <goal>)
	      (preconds ((<goal> GOAL)) 
			(,(make-sym 'I (1+ i))))
	      (effects ()
		       ((add (done <goal>))
			(del (,(make-sym 'I (1+ i)))))))))





