I'm looking at the algorithms used in Calcium now included in flint to simplify expressions with algebraic numbers, in order to improve giac : I don't think we can share code, but for sure we can share ideas and improve both libraries (giac and flint I mean). Looking at the Fredrik's paper
https://inria.hal.science/hal-02986375v2/file/paper.pdf does not give some details on how relations are proven if the numeric check says that an expression may be 0. I'm interested in the case where all numbers involved are algebraic and the multivariate polynomial representation is used (i.e. not qqbar with univariate representation).
My first attempt to do that in giac is compute a gcd of the expression (that is numerically 0) with the last relation in the system of relations (ordered by complexity). I believe Magma does like that (replacing the numerical check by a modular check), because that way one can handle algebraic numbers without factoring over extensions.
Example sqrt(6)-sqrt(2)*sqrt(3) -> x3-x1*x2 where x1^2-2,x2^2-3,x3^2-6 are 0, compute gcd of x3^2-6 with x3-x1*x2 with euclidean algorithm and pseudo-divisions, reduce the remainder with the relations system. Here it will return remainder x1^2*x2^2-6 (without reduction) then 0. Then we can reduce the relation system, replacing degree 2 x3^2-6 by degree 1 x3-x1*x2=0. If the first division does not return a 0 remainder, we have to check the gcd and the cofactor of the "probably 0 expression" in the gcd, and decide which one is 0 with a numerical check.
Does Calcium/flint includes something similar? I had a quick look and I could not find code, but may be that's because I'm not familiar with flint.
Thanks!