"M2 = <N*,F> donde F=- (el opuesto)" tiene un problema, y es que la función se va del universo y no debería (el opuesto de un natural no es un natural). ¿Qué habría que "agregarle" al universo para que esté bien la estructura?
M2 = <R*,F> está bien.
Tené cuidado con las justificaciones: en "t0=x /// t1=f(x)=-x /// t2=f(f(x))=-(-x)=x" estás mezclando el lenguaje y una suerte de interpretación de tu estructura.
t1 = f(x) pero t1 =/= -x. Lo que vos estás pensando es que la interpretación de f en M2 es la función de opuesto. Pero además recordá que solo se pueden interpretar términos cerrados, así que no es válido hacer (f(x))M2.
Vos tenés que dar el M2 y probar que M2 |= (∃x) f(f(x)) =' x y M2 |=/= (∃x) f(x) =' x. Entonces tenés que desarrollar esas dos cosas hasta que te quede todo en metalenguaje, y ahí recién estás en condiciones de mostrar que la función elegida cumple con lo pedido.
Hacé el desarrollo y cualquier duda volvé a consultar.
Saludos