Skip to content

Commit ffc4995

Browse files
authored
Add some helpers for creation of embeddings (#1296)
1 parent 4faca86 commit ffc4995

File tree

5 files changed

+66
-1
lines changed

5 files changed

+66
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "Hecke"
22
uuid = "3e1990a7-5d81-5526-99ce-9ba3ff248f21"
3-
version = "0.22.8"
3+
version = "0.22.9"
44

55
[deps]
66
AbstractAlgebra = "c3fe647b-3220-5bb0-a1ea-a7954cac585d"

src/NumField/ComplexEmbeddings/NfRel.jl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,3 +252,27 @@ function restrict(e::NumFieldEmb, f::NumFieldMor{<: NfRel, <: Any, <: Any})
252252
i = findfirst(cn)
253253
return emb[i]
254254
end
255+
256+
################################################################################
257+
#
258+
# Creation of complex embedding
259+
#
260+
################################################################################
261+
262+
function complex_embedding(K::NfRel, e::NumFieldEmb, r::acb)
263+
@req number_field(e) === base_field(K) "Embedding must be embedding of base field"
264+
embs = complex_embeddings(K)
265+
cnt = 0
266+
local eee::embedding_type(K)
267+
for ee in embs
268+
if ee.base_field_emb != e
269+
continue
270+
end
271+
if overlaps(ee.r, r)
272+
eee = ee
273+
cnt += 1
274+
end
275+
end
276+
cnt != 1 && error("Something wrong")
277+
return eee
278+
end

src/NumField/ComplexEmbeddings/NfRelNS.jl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,3 +228,27 @@ function restrict(e::NumFieldEmb, f::NumFieldMor{<: NfRelNS, <: Any, <: Any})
228228
i = findfirst(cn)
229229
return emb[i]
230230
end
231+
232+
################################################################################
233+
#
234+
# Creation of complex embedding
235+
#
236+
################################################################################
237+
238+
function complex_embedding(K::NfRelNS, e::NumFieldEmb, r::Vector{acb})
239+
@req number_field(e) === base_field(K) "Embedding must be embedding of base field"
240+
embs = complex_embeddings(K)
241+
cnt = 0
242+
local eee::embedding_type(K)
243+
for ee in embs
244+
if ee.base_field_emb != e
245+
continue
246+
end
247+
if all(x -> overlaps(x[1], x[2]), zip(ee.data, r))
248+
eee = ee
249+
cnt += 1
250+
end
251+
end
252+
cnt != 1 && error("Something wrong")
253+
return eee
254+
end

test/NumField/ComplexEmbeddings/NfRel.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,12 @@
9898
@test Set([restrict(e, L) for e in emb]) == Set(complex_embeddings(L))
9999
@test Set([restrict(e, K) for e in emb]) == Set(complex_embeddings(K))
100100

101+
# Creation
102+
103+
Qx, x = QQ["x"]
104+
K, a = number_field(x^2 - 2, "a")
105+
L, b = number_field(polynomial(K, [-3, 0, 1], cached = false))
106+
for e in complex_embeddings(L)
107+
@test complex_embedding(L, restrict(e, K), e(b)) == e
108+
end
101109
end

test/NumField/ComplexEmbeddings/NfRelNS.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,13 @@
123123
emb = complex_embeddings(M)
124124
@test Set([restrict(e, L) for e in emb]) == Set(complex_embeddings(L))
125125
@test Set([restrict(e, K) for e in emb]) == Set(complex_embeddings(K))
126+
127+
# Creation
128+
129+
Qx, x = QQ["x"]
130+
K, a = number_field(x^2 - 2, "a")
131+
L, b = number_field([polynomial(K, [-3, 0, 1], cached = false)])
132+
for e in complex_embeddings(L)
133+
@test complex_embedding(L, restrict(e, K), e.(b)) == e
134+
end
126135
end

0 commit comments

Comments
 (0)