나는 프롤로그를 배우는 중이며 머리를 쓸 수 없다.Prolog Unification with not()
은 가정하자 나는 value(v)
가 올바른 입증 할 수 그래서 a(v).
, 나를 거짓주는 다음 프로그램을
value(v).
a(X) :- not(value(X)).
있습니다.
사실은 value(w)
이 아니므로 나에게 사실을 알려줍니다. 그러므로 시도해 보더라도 올바른 것으로 입증 될 수 없습니다.
내 이해에 따라 a(X).
을 요청하면 value(X)
을 의미없는 첫 번째 값을 제공해야합니다. value(v)
만 정확하므로 무한한 가능성이 있어야합니다.
그러나 Prolog가 계속 대답하는 이유는 무엇입니까 false
?
어떻게 보이 느냐에 따라 *** 위조 ***, 틀린 것은 무엇입니까? 어떤 것이 틀렸다는 것을 어떻게 증명합니까? 그것의 한 가지 견해는 증명할 수없는 모든 것은 거짓입니다 *는 당신이 모든 것이 진실 인 ***이 증명할 수있는 세계에 살고 있다고 상상하는 견해입니다 (그것은 논쟁의 여지가 있습니다). 프롤로그에서'\ +'연산자는 실패 의미로 부정으로 작동합니다. 이것은 위에서 설명하려고했던 것입니다. 희망은 그 단서를 제공합니다. – Limmen
예, false를 증명할 수 없다고 정의하면 Prolog는 올바른 것으로 증명할 수없는 예제를 제공하여 목표를 달성 할 수 있습니까? – user3207838
하지만 문제는 프롤로그가 항상 ** 사실 **을 만들기 위해 노력하고 있다는 것을 추측합니다.이 경우 엔진을 기본적으로 뒤집을 수 있습니까? – user3207838