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?
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) .
Citace od: Loggik kdy 07. 03. 2018, 22:39:21
almost(fall)(John)
To se snadno řeší reifikací, fall(John) je nějaké e
1 a almost(_,_) dělá z e
1 nějaké (co do pravdivostních podmínek jiné) e
2, takže celé to je almost(e
2,e
1) ⋀ fall(e
1,John), přičemž e
2 je (dokazatelná) pravda iff ten původní výraz je pravda.