File: Mathlib/NumberTheory/NumberField/Units/Basic.lean

full_name: Rat.RingOfIntegers.isUnit_iff
code: theorem Rat.RingOfIntegers.isUnit_iff {x : 𝓞 ℚ} : IsUnit x ↔ (x : ℚ) = 1 ∨ (x : ℚ) = -1 
goal: IsUnit x ↔ ↑x = 1 ∨ ↑x = -1

full_name: NumberField.isUnit_iff_norm
code: theorem NumberField.isUnit_iff_norm [NumberField K] {x : 𝓞 K} :
    IsUnit x ↔ |(RingOfIntegers.norm ℚ x : ℚ)| = 1 
goal: IsUnit x ↔ |↑((RingOfIntegers.norm ℚ) x)| = 1

full_name: NumberField.Units.instCoeHTCUnitsRingOfIntegers
code: instance : CoeHTC (𝓞 K)ˣ K 
goal: CoeHTC (𝓞 K)ˣ K

full_name: NumberField.Units.coe_injective
code: theorem coe_injective : Function.Injective ((↑) : (𝓞 K)ˣ → K) 
goal: Function.Injective fun x => (algebraMap (𝓞 K) K) ↑x

full_name: NumberField.Units.coe_coe
code: theorem coe_coe (u : (𝓞 K)ˣ) : ((u : 𝓞 K) : K) = (u : K) 
goal: ↑↑u = (algebraMap (𝓞 K) K) ↑u

full_name: NumberField.Units.coe_mul
code: theorem coe_mul (x y : (𝓞 K)ˣ) : ((x * y : (𝓞 K)ˣ) : K) = (x : K) * (y : K) 
goal: (algebraMap (𝓞 K) K) ↑(x * y) = (algebraMap (𝓞 K) K) ↑x * (algebraMap (𝓞 K) K) ↑y

full_name: NumberField.Units.coe_pow
code: theorem coe_pow (x : (𝓞 K)ˣ) (n : ℕ) : ((x ^ n : (𝓞 K)ˣ) : K) = (x : K) ^ n 
goal: (algebraMap (𝓞 K) K) ↑(x ^ n) = (algebraMap (𝓞 K) K) ↑x ^ n

full_name: NumberField.Units.coe_zpow
code: theorem coe_zpow (x : (𝓞 K)ˣ) (n : ℤ) : (↑(x ^ n) : K) = (x : K) ^ n 
goal: (algebraMap (𝓞 K) K) ↑(x ^ n) = (algebraMap (𝓞 K) K) ↑x ^ n

full_name: NumberField.Units.coe_one
code: theorem coe_one : ((1 : (𝓞 K)ˣ) : K) = (1 : K) 
goal: (algebraMap (𝓞 K) K) ↑1 = 1

full_name: NumberField.Units.coe_neg_one
code: theorem coe_neg_one : ((-1 : (𝓞 K)ˣ) : K) = (-1 : K) 
goal: (algebraMap (𝓞 K) K) ↑(-1) = -1

full_name: NumberField.Units.coe_ne_zero
code: theorem coe_ne_zero (x : (𝓞 K)ˣ) : (x : K) ≠ 0 
goal: (algebraMap (𝓞 K) K) ↑x ≠ 0

full_name: NumberField.Units.norm
code: @[simp]
protected theorem norm [NumberField K] (x : (𝓞 K)ˣ) :
    |Algebra.norm ℚ (x : K)| = 1 
goal: |(Algebra.norm ℚ) ((algebraMap (𝓞 K) K) ↑x)| = 1

full_name: NumberField.Units.torsion
code: /-- The torsion subgroup of the group of units. -/
def torsion : Subgroup (𝓞 K)ˣ 
goal: Subgroup (𝓞 K)ˣ

full_name: NumberField.Units.mem_torsion
code: theorem mem_torsion {x : (𝓞 K)ˣ} [NumberField K] :
    x ∈ torsion K ↔ ∀ w : InfinitePlace K, w x = 1 
goal: x ∈ NumberField.Units.torsion K ↔ ∀ (w : NumberField.InfinitePlace K), w ((algebraMap (𝓞 K) K) ↑x) = 1

full_name: NumberField.Units.instFintypeSubtypeUnitsRingOfIntegersMemSubgroupTorsion
code: /-- The torsion subgroup is finite. -/
instance [NumberField K] : Fintype (torsion K) 
goal: Fintype ↥(NumberField.Units.torsion K)

full_name: NumberField.Units.instNonemptySubtypeUnitsRingOfIntegersMemSubgroupTorsion
code: instance : Nonempty (torsion K) 
goal: Nonempty ↥(NumberField.Units.torsion K)

full_name: NumberField.Units.instIsCyclicSubtypeUnitsRingOfIntegersMemSubgroupTorsion
code: /-- The torsion subgroup is cylic. -/
instance [NumberField K] : IsCyclic (torsion K) 
goal: IsCyclic ↥(NumberField.Units.torsion K)

full_name: NumberField.Units.torsionOrder
code: /-- The order of the torsion subgroup as a positive integer. -/
def torsionOrder [NumberField K] : ℕ+ 
goal: ℕ+

full_name: NumberField.Units.rootsOfUnity_eq_one
code: /-- If `k` does not divide `torsionOrder` then there are no nontrivial roots of unity of
  order dividing `k`. -/
theorem rootsOfUnity_eq_one [NumberField K] {k : ℕ+} (hc : Nat.Coprime k (torsionOrder K))
    {ζ : (𝓞 K)ˣ} : ζ ∈ rootsOfUnity k (𝓞 K) ↔ ζ = 1 
goal: ζ ∈ rootsOfUnity k (𝓞 K) ↔ ζ = 1

full_name: NumberField.Units.rootsOfUnity_eq_torsion
code: /-- The group of roots of unity of order dividing `torsionOrder` is equal to the torsion
group. -/
theorem rootsOfUnity_eq_torsion [NumberField K] :
    rootsOfUnity (torsionOrder K) (𝓞 K) = torsion K 
goal: rootsOfUnity (NumberField.Units.torsionOrder K) (𝓞 K) = NumberField.Units.torsion K