Power detection over number fields

We describe an algorithm that, given an integral ideal <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="German upper A"> <mml:semantics> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="fraktur">A</mml:mi> </mml:mrow> <mml:annotation encoding="application/x-tex">\mathfrak {A}</mml:annotation> </mml:semantics> </mml:math> </inline-formula> in a number field <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper K"> <mml:semantics> <mml:mi>K</mml:mi> <mml:annotation encoding="application/x-tex">K</mml:annotation> </mml:semantics> </mml:math> </inline-formula>, finds the largest integer <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="k greater-than-or-slanted-equals 1"> <mml:semantics> <mml:mrow> <mml:mi>k</mml:mi> <mml:mo>⩾<!-- ⩾ --></mml:mo> <mml:mn>1</mml:mn> </mml:mrow> <mml:annotation encoding="application/x-tex">k\geqslant 1</mml:annotation> </mml:semantics> </mml:math> </inline-formula> such that <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="German upper A"> <mml:semantics> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="fraktur">A</mml:mi> </mml:mrow> <mml:annotation encoding="application/x-tex">\mathfrak {A}</mml:annotation> </mml:semantics> </mml:math> </inline-formula> is a <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="k"> <mml:semantics> <mml:mi>k</mml:mi> <mml:annotation encoding="application/x-tex">k</mml:annotation> </mml:semantics> </mml:math> </inline-formula>-th power, and at the same time computes the ideal <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="German upper B"> <mml:semantics> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="fraktur">B</mml:mi> </mml:mrow> <mml:annotation encoding="application/x-tex">\mathfrak {B}</mml:annotation> </mml:semantics> </mml:math> </inline-formula> such that <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="German upper A equals German upper B Superscript k"> <mml:semantics> <mml:mrow> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="fraktur">A</mml:mi> </mml:mrow> <mml:mo>=</mml:mo> <mml:msup> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="fraktur">B</mml:mi> </mml:mrow> <mml:mi>k</mml:mi> </mml:msup> </mml:mrow> <mml:annotation encoding="application/x-tex">\mathfrak {A} = \mathfrak {B}^k</mml:annotation> </mml:semantics> </mml:math> </inline-formula>. This algorithm does not require the complete factorization of <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="German upper A"> <mml:semantics> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="fraktur">A</mml:mi> </mml:mrow> <mml:annotation encoding="application/x-tex">\mathfrak {A}</mml:annotation> </mml:semantics> </mml:math> </inline-formula> into a product of prime ideals; given the maximal order <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="double-struck upper Z Subscript upper K"> <mml:semantics> <mml:msub> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="double-struck">Z</mml:mi> </mml:mrow> <mml:mi>K</mml:mi> </mml:msub> <mml:annotation encoding="application/x-tex">\mathbb {Z}_K</mml:annotation> </mml:semantics> </mml:math> </inline-formula>, we prove that it has polynomial time complexity. We apply this algorithm to the reduction of elements of <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper K Superscript asterisk"> <mml:semantics> <mml:msup> <mml:mi>K</mml:mi> <mml:mo>∗<!-- ∗ --></mml:mo> </mml:msup> <mml:annotation encoding="application/x-tex">K^*</mml:annotation> </mml:semantics> </mml:math> </inline-formula> modulo <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="k"> <mml:semantics> <mml:mi>k</mml:mi> <mml:annotation encoding="application/x-tex">k</mml:annotation> </mml:semantics> </mml:math> </inline-formula>-th powers.