Termy v Prologu

logic

Termy v Prologu
« kdy: 18. 09. 2015, 15:29:07 »
Otázka víceméně ze zvědavosti: proč se v Prologu používají termy (z formální logiky) a ne nějaká jiná struktura.
A druhá: jak se vyhodnocuje pravidlo vyjadřující symetrii nějakého vztahu, např. sourozenec(X,Y):-sourozenec(Y,X)?


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Termy v Prologu
« Odpověď #1 kdy: 20. 09. 2015, 08:09:31 »
Otázka víceméně ze zvědavosti: proč se v Prologu používají termy (z formální logiky) a ne nějaká jiná struktura.
A druhá: jak se vyhodnocuje pravidlo vyjadřující symetrii nějakého vztahu, např. sourozenec(X,Y):-sourozenec(Y,X)?

1. Protože se dají efektivně unifikovat. Některé logické jazyky používají unifikaci nad stromy nebo nad AVM (to je nejobecnější). A některé mají jen atomy, například Datalog.

2. SLG rezolucí, ta skončí pro každý "nonfloundering" program. Normální Prolog (s SLD rezolucí) se na tom zacyklí. Podle typu úlohy může být lepší použít RETE nebo ASP, to už ale není Prolog.