The usual map function is not working properly when the generators of a GaloisField are designated. For example,
i1 : K1 = GF(8); L1 = GF(64); |
i3 : K2 = GF(8, Variable=>b); L2 = GF(64, Variable=>c); |
i5 : map(L1, K1) --correct natural map 5 4 2 o5 = map (L1, K1, {a + a + a + 1}) o5 : RingMap L1 <--- K1 |
i6 : try map(L2, K2) then << "correct map" else << "error: not implemented: maps between non-Conway Galois fields"; correct map |
This function is a fix for that. See following example
i7 : K2 = GF(8, Variable=>b); L2 = GF(64, Variable=>c); |
i9 : fieldExtension(L2, K2) 5 4 2 o9 = map (L2, K2, {c + c + c + 1}) o9 : RingMap L2 <--- K2 |
The function is implemented by composing the isomorphism $K_2\cong K_1$, the natural embedding $K_1\to L_1$ and the isomorphism $L_1\cong L_2$.
The function depends on the implementation of map(GaloisField,GaloisField).
The object fieldExtension is a method function with options.