ds are independent square classes: no nonempty sublist of ds has a
product that is a square in ℚ.
Sublists rather than subsets of Fin ds.length: a sublist selects a subset of
positions, so repeated radicands are handled correctly ([d, d] is not
independent, its own product being d ^ 2), and the formulation inducts
directly on the list. independent_iff_sublists converts to the ℤ-valued
perfect-square test that an executable check performs.
Instances For
Independence tested over ℤ, quantified over the finite list ds.sublists.
This is the shape a Bool-valued executable check decides: 2 ^ ds.length - 1
integer perfect-square tests, the empty sublist being skipped.
Equations
- Hex.SquareClass.decidableIndependent ds = decidable_of_iff (∀ t ∈ ds.sublists, t ≠ [] → ¬IsSquare t.prod) ⋯
A sublist of independent square classes is independent.
Independence is symmetric in the radicands.
x is a square in the intermediate field K of ℂ / ℚ: some element of K
squares to x. Phrasing this in the ambient field keeps the tower induction
free of subtype coercions.
Equations
- Hex.SquareClass.IsSquareIn K x = ∃ z ∈ K, z ^ 2 = x
Instances For
Every integer lies in every intermediate field of ℂ / ℚ.
IsSquareIn is IsSquare read through the subtype.
A nonzero square factor from K is invisible to IsSquareIn K.
Zero is a square, so a non-square is nonzero.
An integer that is a square in ℚ ⊆ ℂ is a square in ℚ.
When r ^ 2 lies in F, every element of F(r) is x + y * r with x, y ∈ F:
the {1, r} basis, obtained by reducing a polynomial expression modulo
X ^ 2 - C a.
Lemma A. Let F have characteristic ≠ 2, let a ∈ F not be a square in
F, and let r ^ 2 = a in an extension E. If b ∈ F is a square in F(r),
then b or a * b is a square in F.
Writing the witness as x + y * r, the {1, r} basis forces 2 * x * y = 0,
hence x = 0 or y = 0: the two cases give b = y ^ 2 * a and b = x ^ 2.
ℚ(√d₁, …, √dₙ) realised inside ℂ: the intermediate field generated by every
complex square root of every entry of ds. Radicands may be negative, so ℝ is
not enough.
Equations
Instances For
Adjoining no square roots leaves the base field.
The tower grows monotonically in the radicands.
The tower grows monotonically as radicands are consed on.
Lemma A transported to intermediate fields of ℂ / ℚ, stated in the ambient
field.
The strengthened claim. Split the radicands as built ++ rest, where
adjoinSqrt built is the field constructed so far. Then no subproduct that uses
at least one radicand from rest is a square in adjoinSqrt built.
The strengthening is what makes the induction go through: Lemma A turns a
putative square at the top of the tower into a subproduct one level down that
still meets rest. At the d :: built step the four cases are the head d
being selected or not, crossed with Lemma A's two conclusions:
d selected | Lemma A gives | subset used one level down |
|---|---|---|
| no | b is a square | t, u |
| no | d * b is a square | t, d :: u |
| yes | b = d * p is a square | t', d :: u |
| yes | d * b = d ^ 2 * p is a square | t', u, after cancelling d ^ 2 |
The last case needs d ≠ 0, which comes from d not being a square one level
down. In every case u stays nonempty, so the subset still meets rest.
A radicand is not a square in the field generated by the others.
Independence is symmetric in the radicands, so this holds at an arbitrary index and not only at the top of the tower as built: pick any permutation putting the radicand of interest first.
A chosen square root of a radicand does not lie in the field generated by the others. This is the form the primitive-element step consumes, after permuting the radicand of interest to the front.
The relative degree of one step of the tower is 2 once the new radicand is not
a square in the field built so far.
The tower theorem, part (1). Independent square classes generate a
multiquadratic field of degree exactly 2 ^ n.