Bei Teil a) habe ich mehr gemacht als in der Aufgabe gefragt war. Wenn man nur die Substitution ausführen soll, dann genügen die ersten beiden Zeilen. Wichtig ist dabei, das im Teilausdruck (fun x -> f x) das Symbol f frei vorkommt und daher von der Substitution ersetzt wird, während im zweien Ausdruck (fun f -> f x) die Variable f gebunden ist und nicht ersetzt wird. Dort könnte man auch eine gebundene Umbenennung durchführen und (fun f -> f x) zum Beispiel durch (fun g -> g x) ersetzen.
Aber ich sehe, dass die Aufgabensteller genauer sehen wollen, wie man die einzelnen Schritte begründet. Daher sollte man die Substitution Schritt für Schritt durchführen (und nicht alles in einem Rutsch wie ich das gemacht habe). Die Antwort unten von PeterZeller ist daher besser.
Das Ersetzen von (fun x -> x) durch (fun y -> y) muss man nicht machen. Auch das ist nur eine gebundene Umbenennung mit der ich verdeutlichen wollte, dass das (fun x -> x) x zu x äquivalent ist und dass dies durch eine Funktionsanwendung geschieht. Dabei ist es unerheblich ob man (fun x -> x) x oder (fun y -> y) x betrachtet.