als PDF, 2 Folien/Seite - Fachgebiet Programmiersprachen ...
als PDF, 2 Folien/Seite - Fachgebiet Programmiersprachen ...
als PDF, 2 Folien/Seite - Fachgebiet Programmiersprachen ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
© 2012 bei Prof. Dr. Uwe Kastens<br />
© 2007 bei Prof. Dr. Uwe Kastens<br />
Mehrfache Substitution<br />
In einer mehrfachen Substitution σ = [ v 1 / t 1 , ..., v n / t n ] müssen alle Variablen v i paarweise<br />
verschieden sein. In jedem v i / t i müssen v i und t i jeweils derselben Sorte s i angehören.<br />
σ wird dann auf einen Term u wie folgt angewandt:<br />
• u σ = t i , falls u = v i für ein i ∈ {1, ..., n},<br />
• u σ = u , falls u eine Konstante ist oder eine Variable, die nicht unter v i für ein i ∈ {1, ..., n}<br />
vorkommt,<br />
• u σ = f (u 1 σ, u 2 σ, ..., u n σ) , falls u = f (u 1 , u 2 , ..., u n )<br />
D. h. σ ist die gleichzeitige Substitution aller Vorkommen jeder Variablen v i jeweils durch<br />
den Term t i .<br />
Beispiele: σ = [ x / 2∗b, y / 3 ] (x + y) σ = (2∗b + 3)<br />
(y + a∗y) σ = (3 + a∗3)<br />
(x ∗ y) [ x / y, y / y∗y ] = (y ∗ (y ∗ y))<br />
Die leere Substitution wird [ ] notiert. Für alle Terme t gilt t [ ] = t.<br />
Außerdem gilt [v / v] = [ ] für jede Variable v.<br />
Hintereinanderausführung von Substitutionen<br />
Auf einen Term können mehrere Substitutionen hintereinander ausgeführt werden,<br />
z. B. u σ 1 σ 2 σ 3 = ((u σ 1 ) σ 2 ) σ 3<br />
(x+y) [x/y∗x] [y/3] [x/a] = (y∗x+y) [y/3] [x/a] = (3∗x+3) [x/a] = (3∗a+3)<br />
Mod - 3.8<br />
Mehrere Substitutionenen hintereinander können <strong>als</strong> eine Substitution angesehen werden:<br />
z. B. u σ 1 σ 2 σ 3 = u (σ 1 σ 2 σ 3) = u σ<br />
Mehrere einfache Substitutionen hintereinander kann man in eine mehrfache Substitution<br />
mit gleicher Wirkung umrechnen:<br />
Die Hintereinanderausführung [ x 1 / t 1, ..., x n / t n ] [ y / r ]<br />
hat auf jeden Term die gleiche Wirkung wie<br />
falls y unter den x i vorkommt [ x 1 / (t 1[ y / r ]), ..., x n / (t n [ y / r ])]<br />
falls y nicht unter den x i vorkommt [ x 1 / (t 1 [ y / r ]), ..., x n / (t n [ y / r ]), y / r ]<br />
Beispiel: [ x / y∗x ] [ y / 3 ] [ x / a ] = [ x / 3∗x, y / 3] [ x / a ] = [ x / 3∗a, y / 3 ]<br />
Mod - 3.8a