Jak napisać poniżej w Prologu?Jak napisać "a implikuje b lub c" w Prologu
a -> b V c
W języku angielskim, które byłyby a implies that b or c (or both)
Jak napisać poniżej w Prologu?Jak napisać "a implikuje b lub c" w Prologu
a -> b V c
W języku angielskim, które byłyby a implies that b or c (or both)
Klauzula
a => (b ; c) % ';' means 'or'
nie jest to warunek Horn, a tym samym nie może być reprezentowany w (czysty) startowych (patrz np Wikipedia). Z drugiej strony (b ; c) => a
jest klauzulą Horn i oczywiście może być reprezentowana przez dwie reguły Prolog.
Nie jestem zaznajomiony z ';'. Czy możesz wyjaśnić, co to jest i co oznaczają te dwie klauzule? – baruch
Użyłem ';' do reprezentowania 'lub' (= disjunction), tj. Twojego symbolu 'v'. Wybrałem to, ponieważ jest to predefiniowany operator "lub" u wielu tłumaczy Prolog. Więc możesz napisać 'a: - b; c., Co oznacza' (b lub c) implikuje a'. Nie możesz wyrazić "a implikuje (b lub c)". – Jiri
Logicznie rzecz biorąc, „b lub c” to to samo, co „b lub c (lub oba)”
Możesz przeczytać operatorzy o logicznych w Prologu tutaj: http://rigaux.org/language-study/syntax-across-languages-per-language/Prolog.html
Czy możesz wyjaśnić nieco więcej, proszę, co próbujesz zrobić z "sugeruje"?
Mam na myśli jak "a: -b, c." Oznacza "b and c implikuje a", ale w inny sposób. Nieoficjalnie byłoby to "b, c: -a." – baruch
Jeśli potem zapytam "? -b" lub "? -c", powinienem otrzymać fałszywą, nieskomplikowaną lub somesuch, ale jeśli mam również 'd: -b. d: -C#, a następnie '? -d. 'powinno być prawdziwe. – baruch
Możesz napisać dwie klauzule: b: - a. c: - a. –
Nie jestem całkowicie pewien, co chcesz zrobić z tym implikuje oświadczenie. Ale pomyślałbym, że wystarczyłoby poniższe (pamiętaj, że to SICStus nie swi, ale na tym niskim poziomie myślę, że to wszystko to samo).
predicate(a, b).
predicate(a, c).
?- predicate(a, Then).
Then = b ;
Then = c ;
no
?- predicate(x, Then).
no
Można zrobić bardziej skomplikowane kontrole w celu upewnij się, że nigdy nie jest wartością niezwiązany (aby zapobiec predicate(If, b)
. Jest prawdziwe), ale jeśli robisz ogromne zastosowanie wówczas jestem pewien dobra dokumentacja wystarczy.
Czy używam złego terminu? Odpowiedzi wydają się mówić, że implikacja nie jest właściwym terminem. Czy nie wszystkie (najbardziej) klauzule prologu są czytane, ponieważ coś implikuje coś innego ('something_else:-something")? Nie uczę się angielskiego w Prologu, więc mogę używać niewłaściwego terminu. – baruch