Hogyan kell prologban felírni ezt a premisszát?
Az első ötletem ez:
believe(X, ufo) :- believe(X, flat-earth).
believe(X, lizard-man) :- believe(X, flat-earth).
believe(john, flat-earth).
believe(kate, ufo).
believe(sarah, reptilian-humanoid).
believe(paul, god).
Bocsánat, a gyikembernek kétféle fordítását hagytam benne.
Leírom a javítást.
A lényeg, hogy így egy az egyben ezt a matematikai mondatot így szépen kvantorokkal csak ilyen Agda meg Coq féle nyelveken lehet lefordítani.
A Prologban ennek a mondatnak a fordítását nkább csak afféle adatbázisszerűen lehet megadni, vagyis olyan értelemben lehet megadni, hogy a kontextus fényében tükrözze a szándékot.
Mindjárt leírok egy szándékosan kibővített példát teljes kontextussal:
believe(X, ufo) :- believe(X, flat-earth).
believe(X, reptilian-humanoid) :- believe(X, flat-earth).
believe(X, ufo) :- live(X, antarctica).
believe(X, reptilian-humanoid) :- live(X, amazonas).
believe(X, evolution) :- believe(X, flat-earth).
believe(john, flat-earth).
believe(kate, ufo).
believe(sarah, reptilian-humanoid).
believe(paul, god).
live(christa, amazonas).
live(ann, antarctica).
Minden laposföldhívő gisz az ufókban is, a gyikemberekben, is. persze ettől még más független okból is hihet valaki ezekben (az Antarktiszon lakó kutatóállomásokon dolgozó emberek is hisznek automatikusan a az ufőkban, és az Aamzonasz-őserdei vadnak is hisznek automatice a gyikemberekben).
A laposföldhívők ezenkivül hisznek még az evolúcióban is.
és ezen belül a kusza hiedelmevilágon belül a szabályokról le lehet szűrni, hogy igaz az az összefüggés, hogy Minden laposföld hívő hisz az ufókban és a gyíkemberekben is.
És most le lehet kérdezgetni az adatbázist, személyre, vagy akár a hit tárgyára:
LEKÉRDEZÉS:
believe(X, ufo).
vagy akár
believe(john, Y).
sőt akár a kettőre együtt:
believe(X, Y).
Még nézzük, meg, hogy egy más jellegű, írányú próbálkozás mihez vezetne:
believe(X, flat-earth) :- believe(X, ufo), believe(X, huanoid-reptilian).
Ez ugyan más irányű megközelítés, mint amit az előbb írtam:
believe(X, ufo) :- believe(X, flat-earth).
believe(X, lizard-man) :- believe(X, flat-earth).
ennek ellenére ez a megközelítés is lehet jó bizonyos kontextusokban: akkor, ha **semmilyen más** szabály nincs a programban a laposföldben való hit generálására. Ebben az esetben itt is teljesülni fog az, hogy "Minden laposföld hívő hisz az ufókban és a gyíkemberekben is".
Később vettem észre az alábbi kérdést:
https://www.gyakorikerdesek.hu/kozoktatas-tanfolyamok__hazif..
és éppen ez a kérdés ad kontextust is a feladathoz.
Ezért a további választ (egy nagyobb példa kifejtését) ezért a linkbeli kérdéshez írom.
Az ott leírt rezolúció menete aszthiszem jó, viszont azt még nem tudom, Prologra hogyan lehet lefordítani.
Szerintem vizonylag könnyen le lehetne fordítani kibővített Prologba (ahol megengedjük a vágás és tagadás használatát is). Azt nem tudom, hogy le lehet-e fordítani **tiszta** Prologba is (vagyis vágás és tagadás nélkül, szóval metaoperátorok nélkül).
Link javítva (a másik GYK-kérdés a több kontextust nyújtó feladattal):
https://www.gyakorikerdesek.hu/kozoktatas-tanfolyamok__hazif..
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!