Das Inferenzmodul ist das Kernstück des Systems. Es dient zum Schlußfolgern aus den Regeln und Fakten der Wissensbasis.
Die meisten Systeme verwenden genau eine Art von Inferenzregeln. In CycL dagegen gibt es eine ganze Hierarchie von Inferenzschemata, von denen jedes für eine bestimmte Art von Sätzen zuständig ist. Dies ist wesentlich effizienter, denn die meisten Regeln lassen sich in eine von einigen Dutzend semantischen Kategorien einordnen, und jede dieser Kategorien für sich genommen läßt sich natürlich effizienter bearbeiten, als Sätze aller Kategorien in einem einzigen Modul zu behandeln.
Daher besitzt Cyc aus Effizienzgründen Dutzende verschiedener hierarchisch angeordneter Inferenzmethoden. Jede Methode wird auf eine häufig vorkommende syntaktische Kategorie von Regeln angewendet. Die Ergebnisse, die diese spezialisierten Methoden liefern, könnten genauso gut von einer einzigen allgemeinen Inferenzmethode geliefert werden, es würde nur länger dauern. Daher tragen diese Methoden nichts zu Cycs Fähigkeiten bei, was das Schlußfolgern angeht.
Die Regeln werden abhängig von der syntaktischen Kategorie, der sie angehören, verschieden dargestellt, um den bearbeitenden Inferenzmethoden einen optimierten Zugriff zu gewähren. Dieses Vorgehen besitzt natürlich den Nachteil, daß die Regeln jetzt keine einheitliche Gestalt mehr besitzen.
Da der Code zum Implementieren der verschiedenen Inferenzmethoden relativ einfach ist, wurde ein Codegenerator erstellt, der eine Inferenzmethode automatisch aus einer gegebenen Beschreibung erzeugt.
Auch bei der Auswertungsreihenfolge verschiedener Regeln kann optimiert werden, indem zum Beispiel beim optionalen Auswerten verschiedener Regeln zuerst diejenige Regel getestet wird, die eine andere überschreibt. Auch dies ändert nichts an den Inferenzfähigkeiten von Cyc, sondern betrifft nur die Ausführungsgeschwindigkeit.
Der Begriff ,,Regel'' wird hierbei mehr im Sinne einer wohlgeformten Formel als im Sinne einer Produktionsregel verwendet.
Das Truth Maintenance System dient dazu, den Wahrheitsgehalt der Wissensbasis zu erhalten. Das bedeutet, wenn Q aus P und einer Regel abgeleitet wurde und es sich später herausstellt, daß die Regel R nicht mehr gültig ist oder daß P nicht länger wahr ist, dann muß diese spezielle Schlußfolgerung für Q wieder für ungültig erklärt werden.
Dabei wird wiederum eine Hierarchie von speziellen Funktionen zum Lösen dieses Problems aufgebaut. Diese Hierarchie entspricht derjenigen der Inferenzmethoden.
In der Praxis sind die einander entsprechenden Funktionen dieser beiden Hierarchien eng miteinander verknüpft, um beispielsweise eine doppelt durchgeführte Suche zu vermeiden. Die TMS-Routinen haben vollen Zugriff auf die Datenbank, so daß sie sich deren spezielle Strukturen zunutze machen können, um die Effizienz zu steigern. CycL kann beispielsweise die Einträge in der Wissensbasis analysieren und mögliche Ringschlüsse entdecken. Diese Information kann zum Beschleunigen einer späteren Suche genutzt werden.
Trifft Cyc bei dem Versuch, eine Schlußfolgerung zu ziehen, auf Widersprüche, so wird dieses Modul benutzt, um die verschiedenen Argumente für und gegen die betreffende Schlußfolgerung gegeneinander abzuwägen. Außerdem wird diejenige Schlußfolgerung, die ,,gewinnt'', der Wissensbasis hinzugefügt. Wie bereits vorher angesprochen, muß dazu die Überschreibebeziehung zwischen den verschiedenen einander widersprechenden Regeln überprüft werden.
Da Regeln auch Objekte sind, kann diese Beziehung deklarativ festgehalten werden, genau wie jede andere Eigenschaft. Regeln werden also durch Einträge in der Wissensbasis repräsentiert und besitzen einen ,,override''-Slot. Dieser Slot enthält diejenigen Regeln, die von der aktuellen Regel überschrieben werden. Hieraus lassen sich Schlußfolgerungen ziehen, welche Regel im Falle eines Konfliktes gültig ist. Fehlt eine solche explizit angegebene Überschreibebeziehung zwischen einigen Regeln, werden gewisse Standard-Überschreibebeziehungen geprüft. Eine solche Standardbeziehung könnte die ,,Distanz'' der betreffenden Regeln vom Subjekt der Schlußfolgerung sein.
Bei monotonen, das heißt hundertprozentig sicheren Regeln gilt eine Schlußfolgerung immer, wenn die Prämisse korrekt ist. Das Modul zur Entdeckung und Beseitigung von Widersprüchen sorgt dafür, daß dies für alle monotonen Regeln ständig erfüllt ist.
Da viele Elemente in Cycs Wissensbasis Standardannahmen sind, sind Schlußfolgerungen, die aus diesen Standardannahmen mit Hilfe monotoner Regeln gezogen werden, oft falsch (nämlich dann, wenn ein Nicht-Standardfall eingetreten ist). Daher müssen und sollten die Schlußfolgerungen aus monotonen Regeln in vielen Fällen überschrieben werden. Außerdem ist es dann notwendig, dafür zu sorgen, daß die Prämisse der Regel nicht erfüllt ist. Dies erreicht man durch ,,Rückwärtsanwendung'' der Regel: hat man eine Regel , und ist P ,,normalerweise richtig'', so wird Q auch ,,normalerweise richtig''. Wissen wir nun in einem Spezialfall (nicht Q) mit hundertprozentiger Gewißheit, so folgt daraus für diesen Fall (nicht P) mit hundertprozentiger Gewißheit. Dieser Spezialfall wird nun der Wissensbasis zugefügt, um die Standardannahme in diesem Fall außer Kraft zu setzen.
Bei Regeln mit mehreren Prämissen können die Wahrheitswerte vieler unterschiedlicher Standardannahmen geändert werden. In diesem Fall kann man ein Bevorzugungskriterium einführen, das sich an der Teilordnung orientiert, die durch das Prädikat moreLikelyThan gegeben ist. Dieses Prädikat gilt für Standardannahmen und regelt ihre Beziehung untereinander.
Wie bereits erwähnt, werden verschiedene Regeln in CycL sehr unterschiedlich behandelt, je nachdem, in welche syntaktische Kategorie sie fallen. Auch die syntaktischen Kategorien selbst unterliegen einer Entwicklung, sie können zugefügt und entfernt werden. Die Mehrzahl dieser Kategorien dient aber nur zur Effizienzsteigerung und trägt nichts zu Cycs Inferenzfähigkeiten bei. Daher sollten diese syntaktischen Kategorien vor dem Benutzer verborgen sein. Der Benutzer sollte sich vielmehr um Dinge wie die zu verwendende Ontologie kümmern, nicht um implementationsspezifische Details.
Um dies zu ermöglichen, wurde eine Schicht in CycL eingefügt, die die Inhalte der Wissensbasis in einer von den verwendeten Inferenzmechanismen unabhängigen Syntax repräsentiert. Sie wird als die epistemologische Schicht bezeichnet.
Diese Schicht kann man sich wie ein Fenster in die Wissensbasis vorstellen, das die verschiedenen Inferenzmethoden und die zugehörigen Repräsentationen vor den Blicken des Benutzers verbirgt. Anfragen an Cyc können an die epistemologische Schicht gerichtet werden, und zwar in der von ihr verwendeten Sprache. Dies ist zur Zeit die CycL Constraint-Sprache. Diese Anfragen werden dann in weiter innen liegende CycL-Sprachen übersetzt und bearbeitet, und die Antworten werden wieder in eine dem Benutzer verständliche Sprache zurückübersetzt. Fakten und Regeln können auch in der Sprache der epistemologischen Schicht eingegeben werden. Regeln werden dann analysiert und intern in die effizienteste Inferenzmethode umgewandelt. Man kann genausogut eine Regel eingeben, die bereits in einer speziellen Inferenzsprache ausgedrückt ist. Die epistemologische Schicht setzt diese Anfrage in ihre eigene allgemeine Sprache um. Durch die Kombination der beiden letztgenannten Möglichkeiten kann die epistemologische Schicht auch Korrekturen in der Benutzereingabe vornehmen, indem sie eine vom Benutzer angegebene Regel zuerst in ihre allgemeine Sprache und danach in die effizienteste spezielle Sprache übersetzt. Es ist auch möglich, den Zugriff auf Fakten, Regeln usw. der epistemologischen Schicht auf einen bestimmten Kontext zu beschränken und so eine Filterung durchzuführen.
Die epistemologische Schicht ist nicht bloß eine Schnittstelle, die einige Übersetzungsfunktionen anbietet. Sie bildet vielmehr einen festen Bestandteil der Wissensbasis, der die Menge aller Aussagen, die mit ihrer Hilfe in die Wissensbasis eingebracht wurden, enthält. Hat der Benutzer eine Regel in einer speziellen Inferenzsprache eingegeben, die anschließend von der epistemologischen Schicht in eine andere Inferenzsprache umgesetzt wurde, so wird auch die ursprüngliche Formulierung, die der Benutzer verwendet hat, in der epistemologischen Schicht gespeichert. Dies dient dazu, dem Benutzer bei der Antwort auf eine Anfrage einen Satz präsentieren zu können, der sich so eng wie möglich an dem Satz orientiert, der bei der Eingabe der Regel in die Wissensbasis formuliert wurde. Auch muß man berücksichtigen, daß das Verstehen einer Anfrage oft wesentlich einfacher ist als das Generieren einer Antwort, so daß man diese Sätze als Antwortmuster betrachten kann.