Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Simplification of GenricCyclo is incomplete #153

Open
SoongNoonien opened this issue Sep 19, 2024 · 0 comments
Open

Simplification of GenricCyclo is incomplete #153

SoongNoonien opened this issue Sep 19, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@SoongNoonien
Copy link
Member

Unfortunately I found a representation of zero as a GenericCyclo which is not detected by our current simplifications. @fingolfin This means that the second conjecture in my Bachelor's thesis is also false.
Of course I didn't find this just by chance. As we've discussed some tables like 2F4.1 and 2F4.2 should be combined again. For this we need a way to express nearly arbitrary (and well-defined) functions from $\mathbb{Z}/n\mathbb{Z}$ to the field of cyclotomics. I looked for them and found two distinct options to construct them for every $n \in \mathbb{P}$. The following example results from subtracting two different representations of the function mapping $0 \in \mathbb{Z}/3\mathbb{Z}$ to one and everything else to zero:

julia> R=universal_polynomial_ring(QQ);

julia> q=gen(R,:q);

julia> S=generic_cyclotomic_ring(R);

julia> a=S(Dict(2*q//3 => R(1//3), q//3 => R(1//3), R(0)//R(1) => R(1//3)))
(1//3)*exp(2π𝑖(2//3*q)) + (1//3)*exp(2π𝑖(1//3*q)) + 1//3

julia> b=S(Dict((2*q^2+1)//3 => R(1), R(0)//R(1) => -R(1)))
exp(2π𝑖(2//3*q^2 + 1//3)) + -1

julia> c=S(Dict(R(1)//R(3) => -R(1//3), R(0)//R(1) => -R(2//3)))
(-1//3)*exp(2π𝑖(1//3)) + -2//3

julia> d=b*c
(-1//3)*exp(2π𝑖(2//3*q^2 + 1//3)) + (1//3)*exp(2π𝑖(1//3)) + (1//3)*exp(2π𝑖(2//3*q^2)) + 2//3

julia> e=a-d
(1//3)*exp(2π𝑖(2//3*q)) + (1//3)*exp(2π𝑖(2//3*q^2 + 1//3)) + (1//3)*exp(2π𝑖(1//3*q)) + (-1//3)*exp(2π𝑖(1//3)) + (-1//3)*exp(2π𝑖(2//3*q^2)) + -1//3

julia> evaluate(e, [1], [0])
0

julia> evaluate(e, [1], [1])
0

julia> evaluate(e, [1], [2])
0

julia> 

Clearly e is uniquely determined by the images of zero, one and two since its value only depends on the congruence of q modulo three.

@SoongNoonien SoongNoonien added the bug Something isn't working label Sep 19, 2024
@SoongNoonien SoongNoonien changed the title Simplification of GenricCyclo is inclomplete Simplification of GenricCyclo is incomplete Sep 19, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant