1315.30 파생 술어의 규칙 기반 정의
1. 규칙 기반 정의의 원리
파생 술어의 값은 :derived 규칙에 의해 현재 상태의 기반 술어(base predicates)와 다른 파생 술어로부터 논리적으로 추론된다. 이 메커니즘은 데이터로그(Datalog)의 규칙 기반 추론과 유사하며, 선언적(declarative) 방식으로 복합 조건을 정의한다(Thiébaux, Hoffmann, & Nebel, 2005).
2. 단일 규칙 정의
하나의 :derived 규칙으로 파생 술어를 정의하는 경우이다:
(:derived (operational ?r - robot)
(and
(robot_active ?r)
(not (in_error ?r))
(>= (battery_level ?r) 10)
)
)
이 규칙에 의해 (operational robot1)은 robot1이 활성 상태이고, 오류가 없으며, 배터리가 10 이상일 때 자동으로 참이 된다.
3. 다중 규칙 정의 (선언적 규칙)
동일한 파생 술어에 대해 여러 규칙을 정의하면, 이들은 논리적 선언(OR)으로 해석된다:
;; 규칙 1: 직접 접근 가능
(:derived (accessible ?loc - waypoint ?r - robot)
(and (robot_at ?r ?loc))
)
;; 규칙 2: 인접 위치에서 접근 가능
(:derived (accessible ?loc - waypoint ?r - robot)
(exists (?cur - waypoint)
(and
(robot_at ?r ?cur)
(connected ?cur ?loc)
(not (blocked ?loc))
)
)
)
(accessible wp2 robot1)은 규칙 1 또는 규칙 2 중 하나라도 참이면 참이 된다.
4. 재귀적 규칙
파생 술어가 자기 자신을 참조하는 재귀적(recursive) 규칙은 이행적 폐쇄(transitive closure)를 표현하는 데 사용된다:
;; 기저 조건 (base case)
(:derived (path_exists ?from - waypoint ?to - waypoint)
(connected ?from ?to)
)
;; 재귀 조건 (recursive case)
(:derived (path_exists ?from - waypoint ?to - waypoint)
(exists (?mid - waypoint)
(and
(connected ?from ?mid)
(path_exists ?mid ?to)
)
)
)
이 정의에 의해 (path_exists wp1 wp5)는 wp1에서 wp5까지 연결 체인이 존재하면 참이 된다.
4.1 재귀적 규칙의 평가
재귀적 파생 술어의 평가는 고정점(fixed-point) 계산을 통해 수행된다:
- 초기에 모든 파생 술어 인스턴스를 거짓으로 설정한다.
- 모든 규칙을 평가하여 새로 참이 되는 인스턴스를 추가한다.
- 새로 추가된 인스턴스가 없을 때까지 2단계를 반복한다.
이 과정은 최소 고정점(least fixed-point)에 수렴하며, 규칙이 단조적(monotonic)이면 유한 회 반복으로 종료된다.
5. 부정을 포함하는 규칙
파생 규칙의 본체에 부정(not)이 포함될 수 있다:
(:derived (safe_to_enter ?z - zone)
(and
(zone_scanned ?z)
(not (threat_detected ?z))
(forall (?obs - obstacle)
(not (obstacle_in_zone ?obs ?z))
)
)
)
부정을 포함하는 재귀적 규칙은 계층화(stratification)가 필요하다. 파생 술어 P가 다른 파생 술어 Q의 부정을 참조하면, Q가 P보다 먼저 평가되어야 한다. 상호 부정 참조(mutual negation through recursion)는 허용되지 않는다.
6. 로봇 도메인의 규칙 기반 정의 예시
6.1 통신 가능성
(:derived (can_communicate ?r1 - robot ?r2 - robot)
(and
(not (= ?r1 ?r2))
(comm_enabled ?r1)
(comm_enabled ?r2)
(or
(in_direct_range ?r1 ?r2)
(exists (?relay - comm_relay)
(and (in_range ?r1 ?relay) (in_range ?r2 ?relay))
)
)
)
)
6.2 작업 수행 가능성
(:derived (can_perform ?r - robot ?t - task ?loc - waypoint)
(and
(robot_at ?r ?loc)
(task_at ?t ?loc)
(operational ?r)
(has_required_tool ?r ?t)
(not (task_completed ?t))
)
)
7. 참고 문헌
- 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.