Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Loggik kdy 07. 03. 2018, 22:39:21

Název: Reprezentace znalostí a Prolog
Přispěvatel: Loggik kdy 07. 03. 2018, 22:39:21
Zdravím, když chci reprezentovat formálně například "John fell", můžu použít predikát "fall(John)" (teď ignoruju gramatický čas). Pro "John almost fell" bude "almost(fall)(John)", to je ale výraz vyššího řádu. Jak se dá něco takového zapsat v Prologu, aby se s tím dalo pracovat v dotazech nebo jiných pravidlech? Je případně něco lepšího než Prolog pro tyto účely?
Název: Re:Reprezentace znalostí a Prolog
Přispěvatel: VojtaF kdy 08. 03. 2018, 09:39:12
No je to uz par dekad co jsme prologoval ale jestli se nepletu tak funkce call() slouzi na higher order. Tedy u vas call(almost, fall, John) .
Název: Re:Reprezentace znalostí a Prolog
Přispěvatel: Loggik kdy 08. 03. 2018, 12:49:08
Citace od: Loggik kdy 07. 03. 2018, 22:39:21
almost(fall)(John)
To se snadno řeší reifikací, fall(John) je nějaké e1 a almost(_,_) dělá z e1 nějaké (co do pravdivostních podmínek jiné) e2, takže celé to je almost(e2,e1) ⋀ fall(e1,John), přičemž e2 je (dokazatelná) pravda iff ten původní výraz je pravda.