Aufgabe 1

Together[(x+y)(x-y)/(x^2+y^3)]

Together[Expand[(x+y)(x-y)/(x^2+y^3)]]

Also ist offenbar Together keine kanonische Form, da Zaehler- sowie 
Nennerpolynom nicht immer ausmultipliziert werden.

Aufgabe 2

Clear[Lex];
Lex[expr_]:=Module[{var,res},
var=Variables[expr];
var=Reverse[Sort[var]];
res:=Apply[List,Expand[expr]];
For[i=Length[var],i≥1,i--,res=Sort[res,(Exponent[#1,var[[i]]]≤ Exponent[#2,var[[i]]])&]];
(* sortiert aufsteigend (beginnend bei der letzten Variablen, Ordnung bzgl. bereits sortierter Variablen wird beibehalten!) *)
res
]

Lex[(3x^3+2y^2+z)^4]

InputForm[Expand[(3x^3+2y^2+z)^4]]

Clear[GradLex];
GradLex[expr_]:=Module[{var,res},
var=Variables[expr];
var=Reverse[Sort[var]];
res=Lex[expr]; (* zunaechst lexikographisch sortieren (diese Ordnung wird im Folgenden beibehalten!) *)
Sort[res,(Apply[Plus,Exponent[#1,var]]≤ Apply[Plus,Exponent[#2,var]])&] (* Ordnung bzgl. totalen Grad *)
]

GradLex[(3x^3+2y^2+z)^4]