Prolog의 문장
Prolog 프로그램에는 계산식 대신 무엇이 들어갈까?
사실문
참인 것을 그대로 적습니다
사실문(fact statement)은 참이라고 두는 명제를 적은 문장입니다. 5편에서 본 구조 하나를 적고 마침표로 끝냅니다. 4편에서 본 머리 없는 혼 절, 곧 조건 없이 참이라고 둔 절입니다.
이 강의가 따르는 교재의 예입니다.
규칙문
몸이 참이면 머리도 참
규칙문(rule statement)은 4편에서 본 머리 있는 혼 절입니다. :- 의 왼쪽이 머리, 오른쪽이 몸입니다. 3편의 ⊂처럼 오른쪽이 참이면 왼쪽도 참이라고 읽습니다.
오른쪽 몸이 조건(if), 왼쪽 머리가 결론(then)입니다. 머리에는 항을 하나만 적습니다. 교재의 예를 두 줄로 나눠 적었습니다.
변수를 쓴 규칙
한 쌍에서 누구에게나로
앞 장의 규칙은 mary와 shelley 한 쌍에만 맞습니다. 이름 자리에 변수를 쓰면 누구에게나 맞는 규칙이 됩니다. 규칙의 변수는 3편의 ∀처럼 '모든 X, Y에 대해'로 읽습니다.
두 규칙은 교재의 예입니다. 어머니이면 부모이고, 아버지이면 부모입니다. 아래의 사실은 이 편 끝에서 한데 모읍니다.
조건이 여럿인 규칙
쉼표는 '이고'입니다
몸에는 조건을 여럿 적을 수 있습니다. 쉼표는 3편의 논리곱(∩)입니다. 머리가 참이려면 몸의 조건이 모두 참이어야 합니다. 그래서 물음 하나가 조건의 수만큼 갈라집니다.
교재의 예를 두 줄로 나눠 적었습니다. X의 자식 Y가 Z의 부모이면 X는 Z의 조부모입니다. bill, jake, mike는 예시입니다.
목표문
가려 달라, 찾아 달라
Prolog에 던지는 질의를 목표문(goal statement)이라고 합니다. 변수가 없으면 참인지 가려 달라는 뜻이고, 변수가 있으면 참이 되게 하는 값을 찾아 달라는 뜻입니다.
두 목표는 교재의 예입니다. man(fred)는 'fred는 남성인가'입니다. 목표문도 사실문처럼 조건 없이 명제 하나만 적습니다. 4편의 머리 없는 혼 절과 같은 모양입니다.
이 강의 창고
창고에 사실 여섯을 모읍니다
2편부터 창고라고 불러 온, 사실과 규칙을 모아 둔 곳을 Prolog에서는 데이터베이스(database)라고 합니다. 이 사실 여섯에 앞에서 본 규칙 셋을 더한 것이 이 강의 창고입니다.
규칙 셋은 parent 둘과 grandparent 하나입니다. female(shelley)., male(bill)., father(bill, jake).는 교재의 예이고 나머지 사실은 예시입니다.
다음 편