Vi beskriver en ny logik, kallad HiLog, och visar att den ger en mer lämplig grund för logikprogrammering än den traditionella predikatlogiken. HiLog har en högre ordning syntax och tillåter godtyckliga termer att visas på platser där predikat, funktioner och atomformler förekommer i predikatkalkyl. Men dess semantik är första ordningen och medger en sund och fullständig bevisprocedur. Tillämpningar av HiLog diskuteras, inklusive DCG grammatik, högre ordning och modulär logik programmering, och deduktiva databaser. Nyckelord: logik programmering, högre ordning logik, kontextuell predikat analys, rst-order semantik, upplösning teorem bevis, databasspråk, objektorienterade databaser, modulär programmering, DCG grammatik. Att manipulera predikat, funktioner och till och med atomformler är vanligt förekommande i logisk programmering. Till exempel kombinerar Prolog predicate kalkyl, högre ordning och meta-nivå programmering i ett arbetssystem, vilket tillåter programmerare rutinmässig användning av generiska predicate de nitions (t.ex., transitiv stängning, sortering) där predicates kan passeras som parametrar och returneras som värden 7]. En annan välkänd användbar funktion är \call" meta-predikat av Prolog. Applikationer av högorderkonstruktioner i databassammanhang har påpekats i många verk, inklusive 24, 29, 41]. Även om predicate kalkyl utgör grunden för Prolog, har den inte möjlighet att stödja någon av dessa funktioner, som följaktligen har en ad hoc-status i logisk programmering. I detta dokument undersöker vi de grundläggande principer som ligger till grund för den högre ordningens logiska programmering och i synnerhet ger nytt ljus över varför och hur dessa Prolog-funktioner verkar fungera i praktiken. Vi föreslår en ny logik, kallad HiLog, som ger en ren deklarativ semantik till mycket av denna högre ordning logik programmering. Redan från början verkar till och med terminologin för \högre ordning" vara illvillig. Ett antal verk har föreslagit olika högre ordningskonstruktioner i logikramen 1, 5, 13, 7, 23, 24, 30, 31, 42, 45] men med en sådan mångfald av syntax och semantik är det inte alltid klart vilken typ av högre ordning som hävdas. Enligt vår mening finns det minst två olika aspekter av frågan: en högre ordning Detta dokument är en utökad version av det arbete som tidigare rapporterats i 10, 11].
HiLog REF är ett mycket intressant logik programmeringssystem (förlängning XSB-Prolog) som tillåter användning av högre ordning syntax, men det tar inte upp frågan om att stödja funktionell syntax eller lathet.
HiLog : A Foundation for Higher-Order Logic Programming
{'venue': 'ICDT', 'journal': None, 'mag_field_of_study': ['Mathematics', 'Computer Science']}