int x = 3; int f(int y) { return x + y; } int g(int x) { return (x + f(8)); } // g(5) => 16Darf
f(8)
ersetzt werden durch f[y : = 8] ? - Nein:
int x = 3; int g(int x) { return (x + (x+8)); } // g(5) => 18Das freie x in (x + y) wird fälschlich gebunden.
Lösung: lokal umbenennen
int g(int z) { return (z + f(8)); }dann ist Ersetzung erlaubt
int x = 3; int g(int z) { return (z + (x+8)); } // g(5) => 16