" (c) 1993,1994 Copyright (c) University of Washington Written by Tony Barrett. All rights reserved. Use of this software is permitted for non-commercial research purposes, and it may be copied only for that use. All copies must include this copyright message. This software is made available AS IS, and neither the authors nor the University of Washington make any warranty about the software or its performance. When you first acquire this software please send mail to bug-ucpop@cs.washington.edu; the same address should be used for problems." (in-package :domains) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Ferry domain (define (domain ferry) (:requirements :strips :equality) (:constants ferry) (:predicates (at ?x ?y) (place ?x) (auto ?x) (at-ferry ?x) (empty-ferry) (on ?x ?y)) (:action board :parameters (?x ?y) :precondition (and (at ?x ?y) (place ?y) (auto ?x) (at-ferry ?y) (empty-ferry)) :effect (and (on ?x ferry) (not (at ?x ?y)) (not (empty-ferry)))) (:action sail :parameters (?x ?y) :precondition (and (at-ferry ?x) (place ?x) (place ?y) (not (= ?x ?y))) :effect (and (at-ferry ?y) (not (at-ferry ?x)))) (:action debark :parameters (?x ?y) :precondition (and (on ?x ferry) (auto ?x) (place ?y) (at-ferry ?y)) :effect (and (not (on ?x ferry)) (at ?x ?y) (empty-ferry)))) (define (problem ferry1) (:init (place a) (place b) (auto c1) (auto c2) (at c1 a) (at c2 a) (at-ferry a) (empty-ferry)) (:objects a b c1 c2) (:goal (and (at c1 b) (at c2 b))) (:length (:serial 7) (:parallel 7)) (:domain ferry)) (define (problem ferry2) (:init (place a) (place b) (auto c1) (at c1 a) (at-ferry a) (empty-ferry)) (:objects a b c1) (:goal (and (at c1 b))) (:length (:serial 3) (:parallel 3)) (:domain ferry)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; typed version of the ferry domain ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (domain ferry-typed) (:requirements :strips :equality :typing) (:types auto place ferry) (:constants the-ferry - ferry) (:predicates (at-ferry ?l - place) (at ?x - auto ?y - place) (empty-ferry) (on ?x - auto ?f - ferry)) (:action board :parameters (?x - auto ?y - place) :precondition (and (at ?x ?y)(at-ferry ?y)(empty-ferry)) :effect (and (on ?x the-ferry) (not (at ?x ?y)) (not (empty-ferry)))) (:action sail :parameters (?x ?y - place) :precondition (and (at-ferry ?x) (not (= ?x ?y))) :effect (and (at-ferry ?y) (not (at-ferry ?x)))) (:action debark :parameters (?x - auto ?y - place) :precondition (and (on ?x the-ferry)(at-ferry ?y)) :effect (and (not (on ?x the-ferry)) (at ?x ?y) (empty-ferry)))) (define (problem test-ferry) (:domain ferry-typed) (:objects a b - place c1 c2 - auto) (:init (at c1 a)(at c2 a)(at-ferry a) (empty-ferry)) (:length (:serial 7 ) (:parallel 7)) (:goal (and (at c1 b)(at c2 b)))) ;;;UCPOP(25): (bf-control 'test-ferry) ;;; ;;;Initial : ((PLACE A) (PLACE B) (AUTO C1) (AUTO C2) (AT C1 A) (AT C2 A) ;;; (AT-FERRY A) (EMPTY-FERRY)) ;;; ;;;Step 1 : (BOARD C2 A) Created 3 ;;; 0 -> (AT C2 A) ;;; 0 -> (AT-FERRY A) ;;; 0 -> (EMPTY-FERRY) ;;; 0 -> (AUTO C2) ;;; 0 -> (PLACE A) ;;;Step 2 : (SAIL A B) Created 2 ;;; 0 -> (AT-FERRY A) ;;; 0 -> (PLACE A) ;;; 0 -> (PLACE B) ;;;Step 3 : (DEBARK C2 B) Created 1 ;;; 3 -> (ON C2 FERRY) ;;; 2 -> (AT-FERRY B) ;;; 0 -> (AUTO C2) ;;; 0 -> (PLACE B) ;;;Step 4 : (SAIL B A) Created 6 ;;; 2 -> (AT-FERRY B) ;;; 0 -> (PLACE B) ;;; 0 -> (PLACE A) ;;;Step 5 : (BOARD C1 A) Created 7 ;;; 0 -> (AT C1 A) ;;; 6 -> (AT-FERRY A) ;;; 1 -> (EMPTY-FERRY) ;;; 0 -> (AUTO C1) ;;; 0 -> (PLACE A) ;;;Step 6 : (SAIL A B) Created 5 ;;; 6 -> (AT-FERRY A) ;;; 0 -> (PLACE A) ;;; 0 -> (PLACE B) ;;;Step 7 : (DEBARK C1 B) Created 4 ;;; 7 -> (ON C1 FERRY) ;;; 5 -> (AT-FERRY B) ;;; 0 -> (AUTO C1) ;;; 0 -> (PLACE B) ;;; ;;;Goal : (AND (AT C1 B) (AT C2 B)) ;;; 4 -> (AT C1 B) ;;; 1 -> (AT C2 B) ;;;Complete! ;;; ;;;UCPOP (Init = 8 ; Goals = 3 ) => Win (7 steps) CPU 2633 ;;; Nodes (V = 488 ; Q = 153 ; C = 786 ) Branch 1.3135246 ;;; Working Unifies: 2194 Bindings added: 362 ;;;NIL