1315.29 파생 술어의 선언 구문
1. 기본 구문
파생 술어는 PDDL 도메인 파일에서 :derived 키워드를 사용하여 선언한다:
(:derived (<predicate-name> <typed-variable-list>)
<logical-formula>
)
여기서:
<predicate-name>: 파생 술어의 이름<typed-variable-list>: 타입이 지정된 매개변수 목록<logical-formula>: 파생 조건을 정의하는 논리식
2. 선언 예시
2.1 단순 접합 조건
(:derived (robot_ready ?r - robot)
(and
(robot_active ?r)
(not (robot_in_error ?r))
(battery_sufficient ?r)
(sensor_calibrated ?r)
)
)
2.2 존재 양화 조건
(:derived (help_available ?r - robot)
(exists (?helper - robot)
(and
(not (= ?helper ?r))
(robot_available ?helper)
(in_comm_range ?r ?helper)
)
)
)
2.3 전칭 양화 조건
(:derived (all_tasks_complete ?mission - mission)
(forall (?t - task)
(imply (task_of ?t ?mission)
(task_completed ?t)
)
)
)
2.4 재귀적 정의
동일한 파생 술어에 대해 여러 규칙을 정의하여 선언적(disjunctive) 의미를 부여한다:
;; 기저 조건: 직접 연결
(:derived (reachable ?from - waypoint ?to - waypoint)
(connected ?from ?to)
)
;; 재귀 조건: 간접 연결
(:derived (reachable ?from - waypoint ?to - waypoint)
(exists (?mid - waypoint)
(and
(connected ?from ?mid)
(reachable ?mid ?to)
)
)
)
동일 파생 술어에 대한 여러 규칙은 논리적 선언(OR)으로 해석된다. 즉, 어느 하나의 규칙이라도 참이면 파생 술어가 참이다.
3. 구문적 제약 사항
- 파생 술어는
:predicates에도 선언해야 한다. 파생 술어의 시그니처(이름과 매개변수 타입)는:predicates절에 선언되어야 하며,:derived규칙은 그 술어의 값을 결정하는 방법을 정의한다.
(:predicates
(reachable ?from - waypoint ?to - waypoint) ;; 시그니처 선언
)
(:derived (reachable ?from - waypoint ?to - waypoint) ;; 규칙 정의
(connected ?from ?to)
)
-
파생 술어는 액션 효과에 나타날 수 없다. 파생 술어의 값은 규칙에 의해 자동으로 결정되므로,
(:action ... :effect (derived_pred ...))형태는 허용되지 않는다. -
초기 상태에서 파생 술어를 설정할 필요가 없다. 파생 술어의 초기 값은 초기 상태의 기반 술어로부터 자동으로 추론된다.
-
논리식에 사용 가능한 구성:
and,or,not,forall,exists,imply, 원자 술어, 다른 파생 술어의 참조가 허용된다.
4. 파생 술어의 배치 위치
도메인 파일 내에서 :derived 규칙은 일반적으로 :predicates 선언과 :action 정의 사이에 배치한다:
(define (domain example)
(:requirements :strips :typing :derived-predicates)
(:types ...)
(:predicates ...) ;; 일반 술어 + 파생 술어 시그니처
(:functions ...)
;; 파생 술어 규칙 정의
(:derived ...)
(:derived ...)
;; 액션 정의
(:action ...)
(:action ...)
)
5. 플래너 지원 현황
| 플래너 | 파생 술어 지원 | 비고 |
|---|---|---|
| Fast Downward | 지원 | 전처리에서 공리(axiom)로 변환 |
| FF | 미지원 | |
| LAMA | 지원 | Fast Downward 기반 |
| POPF | 제한적 |
Fast Downward 계열 플래너는 파생 술어를 공리(axiom)라는 내부 표현으로 변환하여 효율적으로 처리한다(Helmert, 2009).
6. 참고 문헌
- Thiébaux, S., Hoffmann, J., & Nebel, B. (2005). “In Defense of PDDL Axioms.” Artificial Intelligence, 168(1–2), 38–69.
- Helmert, M. (2009). “Concise Finite-Domain Representations for PDDL Planning Tasks.” Artificial Intelligence, 173(5–6), 503–535.
- Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.