Computing isomorphisms between lattices

Let <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> be a number field, let <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper A"> <mml:semantics> <mml:mi>A</mml:mi> <mml:annotation encoding="application/x-tex">A</mml:annotation> </mml:semantics> </mml:math> </inline-formula> be a finite-dimensional semisimple <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>-algebra, and let <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="normal upper Lamda"> <mml:semantics> <mml:mi mathvariant="normal">Λ<!-- Λ --></mml:mi> <mml:annotation encoding="application/x-tex">\Lambda</mml:annotation> </mml:semantics> </mml:math> </inline-formula> be an <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="script upper O Subscript upper K"> <mml:semantics> <mml:msub> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi class="MJX-tex-caligraphic" mathvariant="script">O</mml:mi> </mml:mrow> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi>K</mml:mi> </mml:mrow> </mml:msub> <mml:annotation encoding="application/x-tex">\mathcal {O}_{K}</mml:annotation> </mml:semantics> </mml:math> </inline-formula>-order in <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper A"> <mml:semantics> <mml:mi>A</mml:mi> <mml:annotation encoding="application/x-tex">A</mml:annotation> </mml:semantics> </mml:math> </inline-formula>. It was shown in previous work that, under certain hypotheses on <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper A"> <mml:semantics> <mml:mi>A</mml:mi> <mml:annotation encoding="application/x-tex">A</mml:annotation> </mml:semantics> </mml:math> </inline-formula>, there exists an algorithm that for a given (left) <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="normal upper Lamda"> <mml:semantics> <mml:mi mathvariant="normal">Λ<!-- Λ --></mml:mi> <mml:annotation encoding="application/x-tex">\Lambda</mml:annotation> </mml:semantics> </mml:math> </inline-formula>-lattice <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper X"> <mml:semantics> <mml:mi>X</mml:mi> <mml:annotation encoding="application/x-tex">X</mml:annotation> </mml:semantics> </mml:math> </inline-formula> either computes a free basis of <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper X"> <mml:semantics> <mml:mi>X</mml:mi> <mml:annotation encoding="application/x-tex">X</mml:annotation> </mml:semantics> </mml:math> </inline-formula> over <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="normal upper Lamda"> <mml:semantics> <mml:mi mathvariant="normal">Λ<!-- Λ --></mml:mi> <mml:annotation encoding="application/x-tex">\Lambda</mml:annotation> </mml:semantics> </mml:math> </inline-formula> or shows that <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper X"> <mml:semantics> <mml:mi>X</mml:mi> <mml:annotation encoding="application/x-tex">X</mml:annotation> </mml:semantics> </mml:math> </inline-formula> is not free over <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="normal upper Lamda"> <mml:semantics> <mml:mi mathvariant="normal">Λ<!-- Λ --></mml:mi> <mml:annotation encoding="application/x-tex">\Lambda</mml:annotation> </mml:semantics> </mml:math> </inline-formula>. In the present article, we generalize this by showing that, under weaker hypotheses on <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper A"> <mml:semantics> <mml:mi>A</mml:mi> <mml:annotation encoding="application/x-tex">A</mml:annotation> </mml:semantics> </mml:math> </inline-formula>, there exists an algorithm that for two given <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="normal upper Lamda"> <mml:semantics> <mml:mi mathvariant="normal">Λ<!-- Λ --></mml:mi> <mml:annotation encoding="application/x-tex">\Lambda</mml:annotation> </mml:semantics> </mml:math> </inline-formula>-lattices <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper X"> <mml:semantics> <mml:mi>X</mml:mi> <mml:annotation encoding="application/x-tex">X</mml:annotation> </mml:semantics> </mml:math> </inline-formula> and <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper Y"> <mml:semantics> <mml:mi>Y</mml:mi> <mml:annotation encoding="application/x-tex">Y</mml:annotation> </mml:semantics> </mml:math> </inline-formula> either computes an isomorphism <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper X right-arrow upper Y"> <mml:semantics> <mml:mrow> <mml:mi>X</mml:mi> <mml:mo stretchy="false">→<!-- → --></mml:mo> <mml:mi>Y</mml:mi> </mml:mrow> <mml:annotation encoding="application/x-tex">X \rightarrow Y</mml:annotation> </mml:semantics> </mml:math> </inline-formula> or determines that <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper X"> <mml:semantics> <mml:mi>X</mml:mi> <mml:annotation encoding="application/x-tex">X</mml:annotation> </mml:semantics> </mml:math> </inline-formula> and <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper Y"> <mml:semantics> <mml:mi>Y</mml:mi> <mml:annotation encoding="application/x-tex">Y</mml:annotation> </mml:semantics> </mml:math> </inline-formula> are not isomorphic. The algorithm is implemented in <sc>Magma</sc> for <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper A equals double-struck upper Q left-bracket upper G right-bracket"> <mml:semantics> <mml:mrow> <mml:mi>A</mml:mi> <mml:mo>=</mml:mo> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="double-struck">Q</mml:mi> </mml:mrow> <mml:mo stretchy="false">[</mml:mo> <mml:mi>G</mml:mi> <mml:mo stretchy="false">]</mml:mo> </mml:mrow> <mml:annotation encoding="application/x-tex">A=\mathbb {Q}[G]</mml:annotation> </mml:semantics> </mml:math> </inline-formula>, <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="normal upper Lamda equals double-struck upper Z left-bracket upper G right-bracket"> <mml:semantics> <mml:mrow> <mml:mi mathvariant="normal">Λ<!-- Λ --></mml:mi> <mml:mo>=</mml:mo> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="double-struck">Z</mml:mi> </mml:mrow> <mml:mo stretchy="false">[</mml:mo> <mml:mi>G</mml:mi> <mml:mo stretchy="false">]</mml:mo> </mml:mrow> <mml:annotation encoding="application/x-tex">\Lambda =\mathbb {Z}[G]</mml:annotation> </mml:semantics> </mml:math> </inline-formula>, and <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="normal upper Lamda"> <mml:semantics> <mml:mi mathvariant="normal">Λ<!-- Λ --></mml:mi> <mml:annotation encoding="application/x-tex">\Lambda</mml:annotation> </mml:semantics> </mml:math> </inline-formula>-lattices <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper X"> <mml:semantics> <mml:mi>X</mml:mi> <mml:annotation encoding="application/x-tex">X</mml:annotation> </mml:semantics> </mml:math> </inline-formula> and <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper Y"> <mml:semantics> <mml:mi>Y</mml:mi> <mml:annotation encoding="application/x-tex">Y</mml:annotation> </mml:semantics> </mml:math> </inline-formula> contained in <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="double-struck upper Q left-bracket upper G right-bracket"> <mml:semantics> <mml:mrow> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="double-struck">Q</mml:mi> </mml:mrow> <mml:mo stretchy="false">[</mml:mo> <mml:mi>G</mml:mi> <mml:mo stretchy="false">]</mml:mo> </mml:mrow> <mml:annotation encoding="application/x-tex">\mathbb {Q}[G]</mml:annotation> </mml:semantics> </mml:math> </inline-formula>, where <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper G"> <mml:semantics> <mml:mi>G</mml:mi> <mml:annotation encoding="application/x-tex">G</mml:annotation> </mml:semantics> </mml:math> </inline-formula> is a finite group satisfying certain hypotheses. This is used to investigate the Galois module structure of rings of integers and ambiguous ideals of tamely ramified Galois extensions of <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="double-struck upper Q"> <mml:semantics> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mi mathvariant="double-struck">Q</mml:mi> </mml:mrow> <mml:annotation encoding="application/x-tex">\mathbb {Q}</mml:annotation> </mml:semantics> </mml:math> </inline-formula> with Galois group isomorphic to <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="upper Q 8 times upper C 2"> <mml:semantics> <mml:mrow> <mml:msub> <mml:mi>Q</mml:mi> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mn>8</mml:mn> </mml:mrow> </mml:msub> <mml:mo>×<!-- × --></mml:mo> <mml:msub> <mml:mi>C</mml:mi> <mml:mrow class="MJX-TeXAtom-ORD"> <mml:mn>2</mml:mn> </mml:mrow> </mml:msub> </mml:mrow> <mml:annotation encoding="application/x-tex">Q_{8} \times C_{2}</mml:annotation> </mml:semantics> </mml:math> </inline-formula>, the direct product of the quaternion group of order <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="8"> <mml:semantics> <mml:mn>8</mml:mn> <mml:annotation encoding="application/x-tex">8</mml:annotation> </mml:semantics> </mml:math> </inline-formula> and the cyclic group of order <inline-formula content-type="math/mathml"> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" alttext="2"> <mml:semantics> <mml:mn>2</mml:mn> <mml:annotation encoding="application/x-tex">2</mml:annotation> </mml:semantics> </mml:math> </inline-formula>.