Documentation

Compass.ConstructibleNumber

Constructible Closure #

(Real or complex) constructible numbers are those that can be built from integers using only the operations of addition, subtraction, multiplication, multiplicative inverse, and square roots. This is equivalent to say that a constructible number lies in a series of quadratic extensions of rational numbers.

We slightly generalize this concept to any base field K and the embient field L, and define constructibleClosure as the IntermediateField K L that is the union of all iterated quadratic extension of K.

Main Declarations #

theorem IntermediateField.relrank_le_relrank_of_le_left {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] {A B C : IntermediateField K L} (h : A B) :
theorem IntermediateField.relrank_sup_left_le {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] (M B : IntermediateField K L) (h : M.relrank B < Cardinal.aleph0) :
M.relrank (MB) M.relrank B
theorem IntermediateField.relrank_sup {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] (e f g : IntermediateField K L) (hef : e.relrank f < Cardinal.aleph0) :
(eg).relrank (fg) e.relrank f
inductive IsIteratedQuadraticExtension {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] :
Instances For
    theorem IsIteratedQuadraticExtension.induction {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] (P : IntermediateField K LProp) (bot : P ) (extension : ∀ (f g : IntermediateField K L), IsIteratedQuadraticExtension ff gf.relrank g = 2P fP g) {f : IntermediateField K L} (hf : IsIteratedQuadraticExtension f) :
    P f
    theorem isIteratedQuadraticExtension_of_exists_tower {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] {f : IntermediateField K L} {n : } (g : Fin (n + 1)IntermediateField K L) (hbot : g 0 = ) (htop : g (Fin.last n) = f) (hle : ∀ (k : Fin n), g k.castSucc g k.succ) (h : ∀ (k : Fin n), (g k.castSucc).relrank (g k.succ) = 2) :
    theorem Sylow.exists_subgroup_tower {G : Type u_4} [Group G] {p n : } (hp : Nat.Prime p) (h : Nat.card G = p ^ n) :
    ∃ (f : Fin (n + 1)Subgroup G), (∀ (k : Fin (n + 1)), Nat.card (f k) = p ^ k) ∀ (k : Fin n), f k.castSucc f k.succ
    theorem Nat.isPowerOfTwo.dvd {m n : } (h : n.isPowerOfTwo) (hdvd : m n) :
    theorem IsIteratedQuadraticExtension.mem_induction {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] (h0 : 2 0) (P : LProp) (bot : ∀ (x : K), P ((algebraMap K L) x)) (add : ∀ (x y : L), P xP yP (x + y)) (inv : ∀ (x : L), P xP x⁻¹) (mul : ∀ (x y : L), P xP yP (x * y)) (sqrt : ∀ (x : L), P (x ^ 2)P x) {f : IntermediateField K L} (hf : IsIteratedQuadraticExtension f) (x : L) :
    x fP x
    theorem IsIteratedQuadraticExtension.finsetSup {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] {ι : Type u_4} (s : Finset ι) (f : ιIntermediateField K L) (h : is, IsIteratedQuadraticExtension (f i)) :
    def constructibleClosure (K : Type u_1) (L : Type u_3) [Field K] [Field L] [Algebra K L] :
    Equations
    Instances For
      theorem mem_constructibleClosure {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] {x : L} :
      theorem mem_constructibleClosure_iff_isPowerOfTwo_finrank_adjoin {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] {x : L} (hx : IsGalois K Kx) :
      theorem algebraMap_mem_constructibleClosure {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] (x : K) :
      theorem mem_constructibleClosure_of_mem_subfield {L : Type u_3} [Field L] {x : L} {K : Subfield L} (h : x K) :
      theorem mem_constructibleClosure_of_sq_mem {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] {x : L} (hx : x ^ 2 constructibleClosure K L) :
      theorem constructibleClosure_induction {K : Type u_1} {L : Type u_3} [Field K] [Field L] [Algebra K L] (h0 : 2 0) (P : LProp) (bot : ∀ (x : K), P ((algebraMap K L) x)) (add : ∀ (x y : L), P xP yP (x + y)) (inv : ∀ (x : L), P xP x⁻¹) (mul : ∀ (x y : L), P xP yP (x * y)) (sqrt : ∀ (x : L), P (x ^ 2)P x) (x : L) :
      theorem constructibleClosure_closure_induction {L : Type u_3} [Field L] (h0 : 2 0) {s : Set L} {P : LProp} (mem : xs, P x) (one : P 1) (add : ∀ (x y : L), P xP yP (x + y)) (neg : ∀ (x : L), P xP (-x)) (inv : ∀ (x : L), P xP x⁻¹) (mul : ∀ (x y : L), P xP yP (x * y)) (sqrt : ∀ (x : L), P (x ^ 2)P x) (x : L) :
      theorem Complex.sq_eq_iff {a b : } :
      a ^ 2 = b a = b.sqrt a = -b.sqrt
      theorem Complex.sqrt_eq_real_add_ite' {a : } :
      a.sqrt = ((a + a.re) / 2) + ↑((if 0 a.im then 1 else -1) * ((a - a.re) / 2)) * I
      theorem Complex.re_sq_of_sq_eq {a b : } (h : a ^ 2 = b) :
      a.re ^ 2 = (b + b.re) / 2
      theorem Complex.im_sq_of_sq_eq {a b : } (h : a ^ 2 = b) :
      a.im ^ 2 = (b - b.re) / 2
      theorem constructibleClosure_transfer {K : Type u_1} {K' : Type u_2} {L : Type u_3} [Field K] [Field K'] [Field L] [Algebra K L] [Algebra K' L] (hK : (algebraMap K L).fieldRange = (algebraMap K' L).fieldRange) {x : L} (h : x constructibleClosure K L) :
      theorem constructibleClosure_transfer_iff {K : Type u_1} {K' : Type u_2} {L : Type u_3} [Field K] [Field K'] [Field L] [Algebra K L] [Algebra K' L] (hK : (algebraMap K L).fieldRange = (algebraMap K' L).fieldRange) {x : L} :