Hvordan lage et negativt faktum i PROLOG

stemmer
0

Hvis jeg har en faktisk Anna er en person i PROLOG Jeg skriver for eksempel:

person(anna).

Men hva skriver jeg om jeg har et faktum tabellen er ikke en person. jeg prøvde

not(person(table)).

Men dette fungerer ikke. Hvordan skriver jeg negative fakta?

Publisert på 09/10/2019 klokken 12:54
kilden bruker
På andre språk...                            


1 svar

stemmer
1

I Prolog, vanligvis du ikke trenger å hevde det negative som et faktum. Fraværet av den positive faktum eller et beviser regel resulterer i svikt (eller mer nøyaktig, "mangel på provability").

Så hvis du bare hevder at person(anna), da spørringen person(anna).vil være sant (lykkes, eller kunne påvises), men person(table).vil være falsk (ikke bestått, eller ikke kan bevises) som forventet. Også spørringen, person(X).vil bare gi X = annasom forventet.

Som standard, hvis du spør person(X), og det er ingen personer som er definert, vil Prolog gi en feilmelding om at personen ukjent predikat. Hvis du heller vil at Prolog bare mislykkes i så fall, er det et alternativ du kan stille (jeg vet i SWI Prolog spesielt, men jeg kan ikke huske hva alternativet er), eller du kan erklære person/1å være en dynamisk predikat hvis du planlegger å hevde personfakta inn i databasen dynamisk som programmet utfører.

Som en del av et predikat definisjon, kan det være lurt å indikere at en varmblodige dyr er et pattedyr, men er ikke en person. I så fall kan du ha:

warm_blooded_animal(X) :-
    mammal(X),
    \+ person(X).

Dette er en liten contrived bare som et eksempel. I dette tilfellet, vil du mer sannsynlig å definere mammali forhold til karakteristiske for å være varm-blooded, etc, i stedet for den andre veien rundt. Men du skjønner poenget ... Merk at operatøren not/1er foreldet i favør av ISO-standard \+/1.

Svarte 09/10/2019 kl. 16:35
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more