### Fibres of a rational separable map and the separating element

Let $X$ and $Y$ be two curves defined over $\mathbb{F}_q$ and $f:X\rightarrow Y$ be a separable rational map. Then there is field embedding $f^∗:\mathbb{F}_q (Y)→\mathbb{F}_q (X)$ defined by $f^∗(\alpha)=\alpha\circ f$. From a given $f$ how to find the map $f^*$ in a map format so that if I input some element from $\mathbb{F}_q (Y)$ to $f$, it will return the corresponding element in $\mathbb{F}_q (X).$ Also how to explicitly get the map $f$? I have written down a sample one. Let $E1$ and $E2$ be two elliptic curves over $GF(25)$ and $h = [x^5,aY^5,Z^5]$ be a map. I want to check the fibers of $h$ for each rational point on $E2$. Also if possible can you provide me with a code to get the separating element?

```
K = GF(25,'a')
H = []
for i in K:
H.append(i)
P.<x,y,z> = ProjectiveSpace(K,2)
E1 = Curve([y^2*z-x^3-(3*H[1])*x*z^2-(4*H[1]+2)*z^3],P)
E2 = Curve([y^2*z-x^3-x*z^2-3*z^3],P)
Rat_pt1 = E1.rational_points()
Rat_pt2 = E2.rational_points()
h = E1.Hom(E2)([x^5,H[1]*y^5,z^5])
KE1 = E1.function_field()
KE2 = E2.function_field()
inv_Im = []
for i in range(len(Rat_pt2)):
inv = []
for j in range(len(Rat_pt1)):
if (h(Rat_pt1[j]) == Rat_pt2[i]):
inv.append(Rat_pt1[j])
inv_Im.append(inv)
print(inv_Im)
```