Otolkad funktion
I matematisk logik är en otolkad funktion eller funktionssymbol en som inte har någon annan egenskap än dess namn och n-ära form. Funktionssymboler används, tillsammans med konstanter och variabler, för att bilda termer .
Teorin om otolkade funktioner kallas också ibland för den fria teorin , eftersom den genereras fritt, och därmed ett fritt objekt , eller den tomma teorin , som är teorin som har en tom uppsättning meningar (i analogi med en initial algebra ). Teorier med en icke-tom uppsättning ekvationer kallas ekvationsteorier . Tillfredsställbarhetsproblemet fria teorier löses genom syntaktisk enande ; algoritmer för de senare används av tolkar för olika datorspråk, som Prolog . Syntaktisk unifiering används också i algoritmer för tillfredsställbarhetsproblemet för vissa andra ekvationsteorier, se Unification (datavetenskap) .
Exempel
Som ett exempel på otolkade funktioner för SMT-LIB, om denna ingång ges till en SMT-lösare :
(declare-fun f (Int) Int) (sert (= (f 10) 1))
SMT-lösaren skulle returnera "Denna ingång är tillfredsställande". Det händer eftersom f
är en otolkad funktion (dvs allt som är känt om f
är dess signatur ), så det är möjligt att f(10) = 1
. Men genom att använda inmatningen nedan:
(declare-fun f (Int) Int) (sert (= (f 10) 1)) (sert (= (f 10) 42))
SMT-lösaren skulle returnera "Denna ingång är otillfredsställande". Det händer eftersom f
, som är en funktion, aldrig kan returnera olika värden för samma ingång.
Diskussion
Beslutsproblemet för fria teorier är särskilt viktigt, eftersom många teorier kan reduceras av det .
Fria teorier kan lösas genom att söka efter vanliga deluttryck för att bilda kongruensslutningen . [ förtydligande behövs ] Lösare inkluderar satisfiability modulo teorier lösare.