title: Why isn't PDDL compiling correctly and resulting in parse error?
body: <p>I am new to <code>PDDL</code> so I don't understand very well what's going on but I have this issue and it seems that black-box planner isn't able to parse my <code>PDDL</code> code.</p>
  <p>Here there is the <strong>domain</strong>:</p>
  <pre><code>(define (domain vacuum)
      (:requirements :strips)
      (:predicates
          (clean ?x)
          (in_room ?x ?r)
          (door_to ?r1 ?r2)
          (dirty ?x)
      )
  
      (:action moveToAction
          :parameters (?ob ?r1 ?r2)
          :precondition (and
              (in_room ?ob ?r1)
              (door_to ?r1 ?r2)
          )
          :effect (and
              (not (in_room ?r1))
              (in_room ?ob ?r2)
          )
      )
      
      (:action cleanAction
          :parameters (?r1)
          :precondition (and
              (dirty ?r1)
          )
          :effect (and
              (clean ?r1)
          )
      )
  )
  </code></pre>
  <p>and here there is the <strong>problem</strong>:</p>
  <pre><code>(define (problem vacuum)
      (:domain vacuum)
      (:objects vacuum kitchen corridor bedroom1 bedroom2 bathroom living_room)
      (:init  
          (dirty kitchen) 
          (dirty bedroom1) 
          (dirty bedroom2)
          (dirty living_room) 
          (dirty bathroom) 
          (dirty corridor)
          (in_room vacuum living_room)
          (not in_room vacuum kitchen) 
          (not in_room vacuum bedroom1) 
          (not in_room vacuum bedroom2) 
          (not in_room vacuum bathroom) 
          (not in_room vacuum corridor) 
          (door_to bathroom corridor) 
          (door_to kitchen corridor) 
          (door_to living_room corridor) 
          (door_to bedroom1 corridor) 
          (door_to bedroom2 corridor) 
          (door_to corridor bathroom) 
          (door_to corridor kitchen)
          (door_to corridor living_room)
          (door_to corridor bedroom1)
          (door_to corridor bedroom2)
      )
      (:goal 
          (and (clean living_room))
      )
  )
  </code></pre>
  <p>The exact error that the solver gives me is:</p>
  <pre><code>parse error
  Error occurred at or near line 40
  </code></pre>
  <p>If I understood correctly the parser reads the domain file first and the problem file after that, so the error should be in the problem file, and in particular in the <code>init</code>. The precise line should be <code>(dirty corridor)</code>.
  I do not understand what I did wrong, did I miss the syntax completely or did I just mess something?</p>