Programmiersprache gesucht

Hallo,

gibt es eine Programmiersprache (egal ob imperartiv oder deklarativ oder sonst was) in der folgende Definitionen gehen:

  1. Quadrat(x) sei für alle x Element aus R definiert mit x -> x*x
    (Mir ist auch egal, ob man dann „Quadrat“ eine Funktion, oder eine Regel, oder was auch immer, nennt. Ich nenn’s im Folgenden jetzt der Einfachheit halber mal Funktion.)

  2. InvMengenAbb(f) sei für alle Funktionen f die für eine Teilmenge von R definiert sind, definiert. f -> f^- wobei f^- für alle y aus R definiert ist mit y -> {x | f(x) = y}

  3. Wurzel(x) sei für alle x Element aus R definiert mit x -> (InvMengenAbb(Quadrat))(x)

Dann sollte am Ende also beispielsweise gelten:
Wurzel(0) = {0}
Wurzel(1) = {-1, 1}
Wurzel(2) = {-1.41421, 1.41421}
Wurzel(-2) = {}

Ich denke der Rest ist klar.

(Mit „definiert“ meine ich wohldefiniert. Von random gibt es natürlich keine Umkehrabbildung.)

Vielen Grüße
Matthias