<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Occurs_check</id>
	<title>Occurs check - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Occurs_check"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Occurs_check&amp;action=history"/>
	<updated>2026-06-01T08:52:09Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Occurs_check&amp;diff=919752&amp;oldid=prev</id>
		<title>imported&gt;Matthäus Wander: link</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Occurs_check&amp;diff=919752&amp;oldid=prev"/>
		<updated>2023-08-19T14:40:38Z</updated>

		<summary type="html">&lt;p&gt;link&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Der &amp;#039;&amp;#039;&amp;#039;Occurs check&amp;#039;&amp;#039;&amp;#039; bezeichnet in der [[Informatik]] einen Teil des [[Unifikation (Logik)|Unifikationsalgorithmus]]. Er verhindert, dass eine [[Variable (Programmierung)|Variable]] durch einen Term ersetzt wird, der diese Variable enthält. Anwendung findet er bspw. bei der Typprüfung in [[Funktionale Programmierung|funktionalen Programmiersprachen]], um die Konstruktion unendlicher Datentypen zu verhindern, sowie in [[Logische Programmierung|logischen Programmiersprachen]].&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Im folgenden Beispiel seien &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; Variablen, und &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; ein 2-stelliges Funktionssymbol. Die Variable &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; und der Term &amp;lt;math&amp;gt;t_1 = f (x, y)&amp;lt;/math&amp;gt; sollen unifiziert werden. Aufgrund des Occurs checks schlägt die Unifizierung fehl, da &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;t_1&amp;lt;/math&amp;gt; als Variable auftritt. Die Unifizierung von &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;t_2 = f (x, z)&amp;lt;/math&amp;gt; wäre hingegen erfolgreich.&lt;br /&gt;
&lt;br /&gt;
== Prolog ==&lt;br /&gt;
In der Sprache [[Prolog (Programmiersprache)|Prolog]] ist der Occur check bei der Überprüfung von Regel-Definitionen aus [[Performance (Informatik)|Performanzgründen]] normalerweise abgeschaltet, was die Gefahr einer [[Endlosschleife (Programmierung)|Endlosschleife]] bei der Auswertung in sich birgt. In einigen Implementierungen von Prolog kann sie aber bei Bedarf aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
Die Komplexität einer Unifikation liegt ohne &amp;#039;&amp;#039;occurs check&amp;#039;&amp;#039; bei:&lt;br /&gt;
: &amp;lt;code&amp;gt;O(min(Größe(Term1), Größe(Term2)))&amp;lt;/code&amp;gt;&lt;br /&gt;
und mit &amp;#039;&amp;#039;occurs check&amp;#039;&amp;#039; bei:&lt;br /&gt;
: &amp;lt;code&amp;gt;O(max(Größe(Term1), Größe(Term2)))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Unifikation (Logik)]]&lt;br /&gt;
* [[Prädikatenlogik]]&lt;br /&gt;
* [[Maschinengestütztes Beweisen]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Franz Baader, Wayne Snyder: &amp;#039;&amp;#039;Ch.8 - Unification theory&amp;#039;&amp;#039; In: &amp;#039;&amp;#039;Handbook of Automated Reasoning&amp;#039;&amp;#039;, 2001, S. 441–524 ([http://www.cs.bu.edu/~snyder/publications/UnifChapter.pdf Unification theory]; 660 kB).&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmiersprachelement]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Matthäus Wander</name></author>
	</entry>
</feed>