프롤로그 및 논리 프로그래밍에서 "원자"의 적절한 정의
이 질문을 SWI Prolog Discourse 포럼 에 게시 하고 유용한 의견을 얻었지만 여기에있는 사람들도이 주제에 대한 아이디어를 가지고있을 수 있습니다.
나는 우리가 쓰고있는 논문에서“atom”이라는 단어를 사용하는 방법에 대해 다소 혼란 스럽습니다.
(1) Prolog에서 원자는“텍스트 상수”라고합니다. 상수 또는 텍스트를 나타내는 복합 용어의 이름으로 사용됩니다.”. 를 참조하십시오 여기 . 따라서 이러한 원자이다 : john
, grandparent
등
논리 프로그래밍 예에 대한 문헌 (2) Riguzzi (2018) 및 Baral 및 Gelfond (1994)은 "원자"형태와 조건이라고되어 p(t1, t2, ..., tn)
제 1, t
S가 이용되고 p
술어, 기호이다. 이것은 고전적인 1 차 논리에서 "원자"의 사용에 해당합니다.
Prolog에 대해 이야기 할 때 (1)이 "atom"에 대한 적절한 정의이고 논리 프로그래밍에 대해 이야기 할 때 (2)가 "atom"에 대한 적절한 정의라고 가정하는 것이 맞습니까? 제가 혼란스러워하는 이유는 프롤로그를 논리 프로그래밍의 인스턴스라고 생각하기 때문이라고 생각합니다.
건배 / JC
2020-08-18 ******************************************** 수정 **
LP 용어를 사용할 때 통일을 설명하는 것은 다소 어려웠습니다. 나는 시도했다.
일반적인 Prolog 용어와의 통합 :
- 원자, 숫자, 변수 및 화합물은 용어입니다.
- Atom = 소문자로 시작하는 문자열
- 숫자 = 숫자
- 변수 = 대문자로 시작하는 문자열
- Compound = p (t1, t2, ..., tn) 여기서 p는 술어 기호이고 ts는 항입니다.
통일:
- 두 원자가 같으면 통일
- 두 숫자가 같으면 통일
- 변수는 모든 종류의 용어와 통합됩니다.
- 두 화합물은 (1) 이름이 같고, (2) 인수의 수가 같고, (3) 모든 인수가 통합되고, (4) 변수가 일관되게 인스턴스화 될 수있는 경우 통합됩니다.
일반적인 LP 용어와 통합 :
- 상수, 변수 및 함수는 용어입니다.
- 상수 = 소문자 또는 숫자로 시작하는 문자열
- 변수 = 대문자로 시작하는 문자열
- 함수 = f (t1, t3, ..., tn) 여기서 f는 함수 기호이고 ts는 항입니다.
- 원자 공식 = p (t1, t2, ..., tn) 여기서 p는 술어 기호이고 ts는 항입니다.
통일:
- 두 개의 상수가 동일하면 통합
- 변수는 모든 종류의 용어와 통합됩니다.
- 두 개의 원자 공식 또는 두 개의 함수는 (1) 이름이 같고, (2) 인수의 수가 같고, (3) 모든 인수가 통합되고, (4) 변수가 일관되게 인스턴스화 될 수있는 경우 통합됩니다.
답변
이름 충돌을 피하기 위해 소수 공식
이나 양수 리터럴 에 대해 이야기 할 수 있지만이 3 가지는 모두 동일합니다.
https://en.wiktionary.org/wiki/prime_formula
https://en.wikipedia.org/wiki/Literal_(mathematical_logic)
https://en.wikipedia.org/wiki/Atomic_formula