프롤로그 및 논리 프로그래밍에서 "원자"의 적절한 정의

Aug 15 2020

이 질문을 SWI Prolog Discourse 포럼 에 게시 하고 유용한 의견을 얻었지만 여기에있는 사람들도이 주제에 대한 아이디어를 가지고있을 수 있습니다.

나는 우리가 쓰고있는 논문에서“atom”이라는 단어를 사용하는 방법에 대해 다소 혼란 스럽습니다.

(1) Prolog에서 원자는“텍스트 상수”라고합니다. 상수 또는 텍스트를 나타내는 복합 용어의 이름으로 사용됩니다.”. 를 참조하십시오 여기 . 따라서 이러한 원자이다 : john, grandparent

논리 프로그래밍 예에 대한 문헌 (2) Riguzzi (2018) 및 Baral 및 Gelfond (1994)은 "원자"형태와 조건이라고되어 p(t1, t2, ..., tn)제 1, tS가 이용되고 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) 변수가 일관되게 인스턴스화 될 수있는 경우 통합됩니다.

답변

MostowskiCollapse Aug 15 2020 at 20:44

이름 충돌을 피하기 위해 소수 공식
이나 양수 리터럴 에 대해 이야기 할 수 있지만이 3 가지는 모두 동일합니다.

https://en.wiktionary.org/wiki/prime_formula

https://en.wikipedia.org/wiki/Literal_(mathematical_logic)

https://en.wikipedia.org/wiki/Atomic_formula