number_theory.function_field
⟷
Mathlib.NumberTheory.FunctionField
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -296,11 +296,11 @@ def inftyValuedFqt : Valued (RatFunc Fq) ℤₘ₀ :=
#align function_field.infty_valued_Fqt FunctionField.inftyValuedFqt
-/
-#print FunctionField.inftyValuedFqt.def' /-
-theorem inftyValuedFqt.def' {x : RatFunc Fq} :
+#print FunctionField.inftyValuedFqt.def /-
+theorem inftyValuedFqt.def {x : RatFunc Fq} :
@Valued.v (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x = inftyValuationDef Fq x :=
rfl
-#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def'
+#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def
-/
#print FunctionField.FqtInfty /-
@@ -324,11 +324,11 @@ instance valuedFqtInfty : Valued (FqtInfty Fq) ℤₘ₀ :=
#align function_field.valued_Fqt_infty FunctionField.valuedFqtInfty
-/
-#print FunctionField.valuedFqtInfty.def' /-
-theorem valuedFqtInfty.def' {x : FqtInfty Fq} :
+#print FunctionField.valuedFqtInfty.def /-
+theorem valuedFqtInfty.def {x : FqtInfty Fq} :
Valued.v x = @Valued.extension (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x :=
rfl
-#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def'
+#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def
-/
end InftyValuation
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen, Ashvni Narayanan
-/
import Algebra.Order.Group.TypeTags
-import FieldTheory.Ratfunc
+import FieldTheory.RatFunc
import RingTheory.DedekindDomain.IntegralClosure
import RingTheory.IntegrallyClosed
import Topology.Algebra.ValuedField
@@ -296,11 +296,11 @@ def inftyValuedFqt : Valued (RatFunc Fq) ℤₘ₀ :=
#align function_field.infty_valued_Fqt FunctionField.inftyValuedFqt
-/
-#print FunctionField.inftyValuedFqt.def /-
-theorem inftyValuedFqt.def {x : RatFunc Fq} :
+#print FunctionField.inftyValuedFqt.def' /-
+theorem inftyValuedFqt.def' {x : RatFunc Fq} :
@Valued.v (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x = inftyValuationDef Fq x :=
rfl
-#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def
+#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def'
-/
#print FunctionField.FqtInfty /-
@@ -324,11 +324,11 @@ instance valuedFqtInfty : Valued (FqtInfty Fq) ℤₘ₀ :=
#align function_field.valued_Fqt_infty FunctionField.valuedFqtInfty
-/
-#print FunctionField.valuedFqtInfty.def /-
-theorem valuedFqtInfty.def {x : FqtInfty Fq} :
+#print FunctionField.valuedFqtInfty.def' /-
+theorem valuedFqtInfty.def' {x : FqtInfty Fq} :
Valued.v x = @Valued.extension (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x :=
rfl
-#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def
+#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def'
-/
end InftyValuation
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -135,8 +135,8 @@ theorem algebraMap_injective : Function.Injective ⇑(algebraMap Fq[X] (ringOfIn
(IsFractionRing.injective Fq[X] (RatFunc Fq))
rw [injective_iff_map_eq_zero (algebraMap Fq[X] ↥(ring_of_integers Fq F))]
intro p hp
- rw [← Subtype.coe_inj, Subalgebra.coe_zero] at hp
- rw [injective_iff_map_eq_zero (algebraMap Fq[X] F)] at hinj
+ rw [← Subtype.coe_inj, Subalgebra.coe_zero] at hp
+ rw [injective_iff_map_eq_zero (algebraMap Fq[X] F)] at hinj
exact hinj p hp
#align function_field.ring_of_integers.algebra_map_injective FunctionField.ringOfIntegers.algebraMap_injective
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,11 +3,11 @@ Copyright (c) 2021 Anne Baanen. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen, Ashvni Narayanan
-/
-import Mathbin.Algebra.Order.Group.TypeTags
-import Mathbin.FieldTheory.Ratfunc
-import Mathbin.RingTheory.DedekindDomain.IntegralClosure
-import Mathbin.RingTheory.IntegrallyClosed
-import Mathbin.Topology.Algebra.ValuedField
+import Algebra.Order.Group.TypeTags
+import FieldTheory.Ratfunc
+import RingTheory.DedekindDomain.IntegralClosure
+import RingTheory.IntegrallyClosed
+import Topology.Algebra.ValuedField
#align_import number_theory.function_field from "leanprover-community/mathlib"@"1b089e3bdc3ce6b39cd472543474a0a137128c6c"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2021 Anne Baanen. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen, Ashvni Narayanan
-
-! This file was ported from Lean 3 source module number_theory.function_field
-! leanprover-community/mathlib commit 1b089e3bdc3ce6b39cd472543474a0a137128c6c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Order.Group.TypeTags
import Mathbin.FieldTheory.Ratfunc
@@ -14,6 +9,8 @@ import Mathbin.RingTheory.DedekindDomain.IntegralClosure
import Mathbin.RingTheory.IntegrallyClosed
import Mathbin.Topology.Algebra.ValuedField
+#align_import number_theory.function_field from "leanprover-community/mathlib"@"1b089e3bdc3ce6b39cd472543474a0a137128c6c"
+
/-!
# Function fields
mathlib commit https://github.com/leanprover-community/mathlib/commit/d30d31261cdb4d2f5e612eabc3c4bf45556350d5
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen, Ashvni Narayanan
! This file was ported from Lean 3 source module number_theory.function_field
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit 1b089e3bdc3ce6b39cd472543474a0a137128c6c
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -17,6 +17,9 @@ import Mathbin.Topology.Algebra.ValuedField
/-!
# Function fields
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file defines a function field and the ring of integers corresponding to it.
## Main definitions
mathlib commit https://github.com/leanprover-community/mathlib/commit/6285167a053ad0990fc88e56c48ccd9fae6550eb
@@ -312,7 +312,7 @@ def FqtInfty :=
instance : Field (FqtInfty Fq) :=
letI := infty_valued_Fqt Fq
- UniformSpace.Completion.field
+ UniformSpace.Completion.instField
instance : Inhabited (FqtInfty Fq) :=
⟨(0 : FqtInfty Fq)⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/f2ad3645af9effcdb587637dc28a6074edc813f9
@@ -51,6 +51,7 @@ open scoped nonZeroDivisors Polynomial DiscreteValuation
variable (Fq F : Type) [Field Fq] [Field F]
+#print FunctionField /-
/-- `F` is a function field over the finite field `Fq` if it is a finite
extension of the field of rational functions in one variable over `Fq`.
@@ -59,7 +60,9 @@ Note that `F` can be a function field over multiple, non-isomorphic, `Fq`.
abbrev FunctionField [Algebra (RatFunc Fq) F] : Prop :=
FiniteDimensional (RatFunc Fq) F
#align function_field FunctionField
+-/
+#print functionField_iff /-
/-- `F` is a function field over `Fq` iff it is a finite extension of `Fq(t)`. -/
protected theorem functionField_iff (Fqt : Type _) [Field Fqt] [Algebra Fq[X] Fqt]
[IsFractionRing Fq[X] Fqt] [Algebra (RatFunc Fq) F] [Algebra Fqt F] [Algebra Fq[X] F]
@@ -82,7 +85,9 @@ protected theorem functionField_iff (Fqt : Type _) [Field Fqt] [Algebra Fq[X] Fq
refine' FiniteDimensional.of_fintype_basis (b.map_coeffs e.symm _)
intro c x; convert (this (e.symm c) x).symm; simp only [e.apply_symm_apply]
#align function_field_iff functionField_iff
+-/
+#print algebraMap_injective /-
theorem algebraMap_injective [Algebra Fq[X] F] [Algebra (RatFunc Fq) F]
[IsScalarTower Fq[X] (RatFunc Fq) F] : Function.Injective ⇑(algebraMap Fq[X] F) :=
by
@@ -91,9 +96,11 @@ theorem algebraMap_injective [Algebra Fq[X] F] [Algebra (RatFunc Fq) F]
Function.Injective.comp (algebraMap (RatFunc Fq) F).Injective
(IsFractionRing.injective Fq[X] (RatFunc Fq))
#align algebra_map_injective algebraMap_injective
+-/
namespace FunctionField
+#print FunctionField.ringOfIntegers /-
/-- The function field analogue of `number_field.ring_of_integers`:
`function_field.ring_of_integers Fq Fqt F` is the integral closure of `Fq[t]` in `F`.
@@ -103,6 +110,7 @@ only when proving its properties.
def ringOfIntegers [Algebra Fq[X] F] :=
integralClosure Fq[X] F
#align function_field.ring_of_integers FunctionField.ringOfIntegers
+-/
namespace RingOfIntegers
@@ -116,6 +124,7 @@ instance : IsIntegralClosure (ringOfIntegers Fq F) Fq[X] F :=
variable [Algebra (RatFunc Fq) F] [IsScalarTower Fq[X] (RatFunc Fq) F]
+#print FunctionField.ringOfIntegers.algebraMap_injective /-
theorem algebraMap_injective : Function.Injective ⇑(algebraMap Fq[X] (ringOfIntegers Fq F)) :=
by
have hinj : Function.Injective ⇑(algebraMap Fq[X] F) :=
@@ -130,13 +139,16 @@ theorem algebraMap_injective : Function.Injective ⇑(algebraMap Fq[X] (ringOfIn
rw [injective_iff_map_eq_zero (algebraMap Fq[X] F)] at hinj
exact hinj p hp
#align function_field.ring_of_integers.algebra_map_injective FunctionField.ringOfIntegers.algebraMap_injective
+-/
+#print FunctionField.ringOfIntegers.not_isField /-
theorem not_isField : ¬IsField (ringOfIntegers Fq F) := by
simpa [←
(IsIntegralClosure.isIntegral_algebra Fq[X] F).isField_iff_isField
(algebraMap_injective Fq F)] using
Polynomial.not_isField Fq
#align function_field.ring_of_integers.not_is_field FunctionField.ringOfIntegers.not_isField
+-/
variable [FunctionField Fq F]
@@ -161,21 +173,28 @@ section InftyValuation
variable [DecidableEq (RatFunc Fq)]
+#print FunctionField.inftyValuationDef /-
/-- The valuation at infinity is the nonarchimedean valuation on `Fq(t)` with uniformizer `1/t`.
Explicitly, if `f/g ∈ Fq(t)` is a nonzero quotient of polynomials, its valuation at infinity is
`multiplicative.of_add(degree(f) - degree(g))`. -/
def inftyValuationDef (r : RatFunc Fq) : ℤₘ₀ :=
if r = 0 then 0 else Multiplicative.ofAdd r.intDegree
#align function_field.infty_valuation_def FunctionField.inftyValuationDef
+-/
+#print FunctionField.InftyValuation.map_zero' /-
theorem InftyValuation.map_zero' : inftyValuationDef Fq 0 = 0 :=
if_pos rfl
#align function_field.infty_valuation.map_zero' FunctionField.InftyValuation.map_zero'
+-/
+#print FunctionField.InftyValuation.map_one' /-
theorem InftyValuation.map_one' : inftyValuationDef Fq 1 = 1 :=
(if_neg one_ne_zero).trans <| by rw [RatFunc.intDegree_one, ofAdd_zero, WithZero.coe_one]
#align function_field.infty_valuation.map_one' FunctionField.InftyValuation.map_one'
+-/
+#print FunctionField.InftyValuation.map_mul' /-
theorem InftyValuation.map_mul' (x y : RatFunc Fq) :
inftyValuationDef Fq (x * y) = inftyValuationDef Fq x * inftyValuationDef Fq y :=
by
@@ -188,7 +207,9 @@ theorem InftyValuation.map_mul' (x y : RatFunc Fq) :
rw [if_neg hx, if_neg hy, if_neg (mul_ne_zero hx hy), ← WithZero.coe_mul, WithZero.coe_inj, ←
ofAdd_add, RatFunc.intDegree_mul hx hy]
#align function_field.infty_valuation.map_mul' FunctionField.InftyValuation.map_mul'
+-/
+#print FunctionField.InftyValuation.map_add_le_max' /-
theorem InftyValuation.map_add_le_max' (x y : RatFunc Fq) :
inftyValuationDef Fq (x + y) ≤ max (inftyValuationDef Fq x) (inftyValuationDef Fq y) :=
by
@@ -210,13 +231,17 @@ theorem InftyValuation.map_add_le_max' (x y : RatFunc Fq) :
Multiplicative.ofAdd_le, ← le_max_iff]
exact RatFunc.intDegree_add_le hy hxy
#align function_field.infty_valuation.map_add_le_max' FunctionField.InftyValuation.map_add_le_max'
+-/
+#print FunctionField.inftyValuation_of_nonzero /-
@[simp]
-theorem infty_valuation_of_nonzero {x : RatFunc Fq} (hx : x ≠ 0) :
+theorem inftyValuation_of_nonzero {x : RatFunc Fq} (hx : x ≠ 0) :
inftyValuationDef Fq x = Multiplicative.ofAdd x.intDegree := by
rw [infty_valuation_def, if_neg hx]
-#align function_field.infty_valuation_of_nonzero FunctionField.infty_valuation_of_nonzero
+#align function_field.infty_valuation_of_nonzero FunctionField.inftyValuation_of_nonzero
+-/
+#print FunctionField.inftyValuation /-
/-- The valuation at infinity on `Fq(t)`. -/
def inftyValuation : Valuation (RatFunc Fq) ℤₘ₀
where
@@ -226,25 +251,33 @@ def inftyValuation : Valuation (RatFunc Fq) ℤₘ₀
map_mul' := InftyValuation.map_mul' Fq
map_add_le_max' := InftyValuation.map_add_le_max' Fq
#align function_field.infty_valuation FunctionField.inftyValuation
+-/
+#print FunctionField.inftyValuation_apply /-
@[simp]
theorem inftyValuation_apply {x : RatFunc Fq} : inftyValuation Fq x = inftyValuationDef Fq x :=
rfl
#align function_field.infty_valuation_apply FunctionField.inftyValuation_apply
+-/
+#print FunctionField.inftyValuation.C /-
@[simp]
-theorem inftyValuation.c {k : Fq} (hk : k ≠ 0) :
+theorem inftyValuation.C {k : Fq} (hk : k ≠ 0) :
inftyValuationDef Fq (RatFunc.C k) = Multiplicative.ofAdd (0 : ℤ) :=
by
have hCk : RatFunc.C k ≠ 0 := (map_ne_zero _).mpr hk
rw [infty_valuation_def, if_neg hCk, RatFunc.intDegree_C]
-#align function_field.infty_valuation.C FunctionField.inftyValuation.c
+#align function_field.infty_valuation.C FunctionField.inftyValuation.C
+-/
+#print FunctionField.inftyValuation.X /-
@[simp]
-theorem inftyValuation.x : inftyValuationDef Fq RatFunc.X = Multiplicative.ofAdd (1 : ℤ) := by
+theorem inftyValuation.X : inftyValuationDef Fq RatFunc.X = Multiplicative.ofAdd (1 : ℤ) := by
rw [infty_valuation_def, if_neg RatFunc.X_ne_zero, RatFunc.intDegree_X]
-#align function_field.infty_valuation.X FunctionField.inftyValuation.x
+#align function_field.infty_valuation.X FunctionField.inftyValuation.X
+-/
+#print FunctionField.inftyValuation.polynomial /-
@[simp]
theorem inftyValuation.polynomial {p : Fq[X]} (hp : p ≠ 0) :
inftyValuationDef Fq (algebraMap Fq[X] (RatFunc Fq) p) =
@@ -254,21 +287,28 @@ theorem inftyValuation.polynomial {p : Fq[X]} (hp : p ≠ 0) :
exact hp
rw [infty_valuation_def, if_neg hp', RatFunc.intDegree_polynomial]
#align function_field.infty_valuation.polynomial FunctionField.inftyValuation.polynomial
+-/
+#print FunctionField.inftyValuedFqt /-
/-- The valued field `Fq(t)` with the valuation at infinity. -/
def inftyValuedFqt : Valued (RatFunc Fq) ℤₘ₀ :=
Valued.mk' <| inftyValuation Fq
#align function_field.infty_valued_Fqt FunctionField.inftyValuedFqt
+-/
+#print FunctionField.inftyValuedFqt.def /-
theorem inftyValuedFqt.def {x : RatFunc Fq} :
@Valued.v (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x = inftyValuationDef Fq x :=
rfl
#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def
+-/
+#print FunctionField.FqtInfty /-
/-- The completion `Fq((t⁻¹))` of `Fq(t)` with respect to the valuation at infinity. -/
def FqtInfty :=
@UniformSpace.Completion (RatFunc Fq) <| (inftyValuedFqt Fq).toUniformSpace
#align function_field.Fqt_infty FunctionField.FqtInfty
+-/
instance : Field (FqtInfty Fq) :=
letI := infty_valued_Fqt Fq
@@ -277,15 +317,19 @@ instance : Field (FqtInfty Fq) :=
instance : Inhabited (FqtInfty Fq) :=
⟨(0 : FqtInfty Fq)⟩
+#print FunctionField.valuedFqtInfty /-
/-- The valuation at infinity on `k(t)` extends to a valuation on `Fqt_infty`. -/
instance valuedFqtInfty : Valued (FqtInfty Fq) ℤₘ₀ :=
@Valued.valuedCompletion _ _ _ _ (inftyValuedFqt Fq)
#align function_field.valued_Fqt_infty FunctionField.valuedFqtInfty
+-/
+#print FunctionField.valuedFqtInfty.def /-
theorem valuedFqtInfty.def {x : FqtInfty Fq} :
Valued.v x = @Valued.extension (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x :=
rfl
#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def
+-/
end InftyValuation
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -80,7 +80,7 @@ protected theorem functionField_iff (Fqt : Type _) [Field Fqt] [Algebra Fq[X] Fq
exact FiniteDimensional.of_fintype_basis (b.map_coeffs e this)
· let b := FiniteDimensional.finBasis Fqt F
refine' FiniteDimensional.of_fintype_basis (b.map_coeffs e.symm _)
- intro c x; convert(this (e.symm c) x).symm; simp only [e.apply_symm_apply]
+ intro c x; convert (this (e.symm c) x).symm; simp only [e.apply_symm_apply]
#align function_field_iff functionField_iff
theorem algebraMap_injective [Algebra Fq[X] F] [Algebra (RatFunc Fq) F]
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -126,8 +126,8 @@ theorem algebraMap_injective : Function.Injective ⇑(algebraMap Fq[X] (ringOfIn
(IsFractionRing.injective Fq[X] (RatFunc Fq))
rw [injective_iff_map_eq_zero (algebraMap Fq[X] ↥(ring_of_integers Fq F))]
intro p hp
- rw [← Subtype.coe_inj, Subalgebra.coe_zero] at hp
- rw [injective_iff_map_eq_zero (algebraMap Fq[X] F)] at hinj
+ rw [← Subtype.coe_inj, Subalgebra.coe_zero] at hp
+ rw [injective_iff_map_eq_zero (algebraMap Fq[X] F)] at hinj
exact hinj p hp
#align function_field.ring_of_integers.algebra_map_injective FunctionField.ringOfIntegers.algebraMap_injective
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -47,7 +47,7 @@ function field, ring of integers
noncomputable section
-open nonZeroDivisors Polynomial DiscreteValuation
+open scoped nonZeroDivisors Polynomial DiscreteValuation
variable (Fq F : Type) [Field Fq] [Field F]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -80,9 +80,7 @@ protected theorem functionField_iff (Fqt : Type _) [Field Fqt] [Algebra Fq[X] Fq
exact FiniteDimensional.of_fintype_basis (b.map_coeffs e this)
· let b := FiniteDimensional.finBasis Fqt F
refine' FiniteDimensional.of_fintype_basis (b.map_coeffs e.symm _)
- intro c x
- convert(this (e.symm c) x).symm
- simp only [e.apply_symm_apply]
+ intro c x; convert(this (e.symm c) x).symm; simp only [e.apply_symm_apply]
#align function_field_iff functionField_iff
theorem algebraMap_injective [Algebra Fq[X] F] [Algebra (RatFunc Fq) F]
@@ -205,8 +203,7 @@ theorem InftyValuation.map_add_le_max' (x y : RatFunc Fq) :
rw [max_eq_right (WithZero.zero_le (infty_valuation_def Fq x))]
exact le_refl _
· by_cases hxy : x + y = 0
- · rw [infty_valuation_def, if_pos hxy]
- exact zero_le'
+ · rw [infty_valuation_def, if_pos hxy]; exact zero_le'
· rw [infty_valuation_def, infty_valuation_def, infty_valuation_def, if_neg hx, if_neg hy,
if_neg hxy]
rw [le_max_iff, WithZero.coe_le_coe, Multiplicative.ofAdd_le, WithZero.coe_le_coe,
@@ -253,9 +250,7 @@ theorem inftyValuation.polynomial {p : Fq[X]} (hp : p ≠ 0) :
inftyValuationDef Fq (algebraMap Fq[X] (RatFunc Fq) p) =
Multiplicative.ofAdd (p.natDegree : ℤ) :=
by
- have hp' : algebraMap Fq[X] (RatFunc Fq) p ≠ 0 :=
- by
- rw [Ne.def, RatFunc.algebraMap_eq_zero_iff]
+ have hp' : algebraMap Fq[X] (RatFunc Fq) p ≠ 0 := by rw [Ne.def, RatFunc.algebraMap_eq_zero_iff];
exact hp
rw [infty_valuation_def, if_neg hp', RatFunc.intDegree_polynomial]
#align function_field.infty_valuation.polynomial FunctionField.inftyValuation.polynomial
mathlib commit https://github.com/leanprover-community/mathlib/commit/ef95945cd48c932c9e034872bd25c3c220d9c946
@@ -56,17 +56,17 @@ extension of the field of rational functions in one variable over `Fq`.
Note that `F` can be a function field over multiple, non-isomorphic, `Fq`.
-/
-abbrev FunctionField [Algebra (Ratfunc Fq) F] : Prop :=
- FiniteDimensional (Ratfunc Fq) F
+abbrev FunctionField [Algebra (RatFunc Fq) F] : Prop :=
+ FiniteDimensional (RatFunc Fq) F
#align function_field FunctionField
/-- `F` is a function field over `Fq` iff it is a finite extension of `Fq(t)`. -/
protected theorem functionField_iff (Fqt : Type _) [Field Fqt] [Algebra Fq[X] Fqt]
- [IsFractionRing Fq[X] Fqt] [Algebra (Ratfunc Fq) F] [Algebra Fqt F] [Algebra Fq[X] F]
- [IsScalarTower Fq[X] Fqt F] [IsScalarTower Fq[X] (Ratfunc Fq) F] :
+ [IsFractionRing Fq[X] Fqt] [Algebra (RatFunc Fq) F] [Algebra Fqt F] [Algebra Fq[X] F]
+ [IsScalarTower Fq[X] Fqt F] [IsScalarTower Fq[X] (RatFunc Fq) F] :
FunctionField Fq F ↔ FiniteDimensional Fqt F :=
by
- let e := IsLocalization.algEquiv Fq[X]⁰ (Ratfunc Fq) Fqt
+ let e := IsLocalization.algEquiv Fq[X]⁰ (RatFunc Fq) Fqt
have : ∀ (c) (x : F), e c • x = c • x := by
intro c x
rw [Algebra.smul_def, Algebra.smul_def]
@@ -76,7 +76,7 @@ protected theorem functionField_iff (Fqt : Type _) [Field Fqt] [Algebra Fq[X] Fq
simp only [AlgEquiv.map_one, RingHom.map_one, AlgEquiv.map_mul, RingHom.map_mul,
AlgEquiv.commutes, ← IsScalarTower.algebraMap_apply]
constructor <;> intro h <;> skip
- · let b := FiniteDimensional.finBasis (Ratfunc Fq) F
+ · let b := FiniteDimensional.finBasis (RatFunc Fq) F
exact FiniteDimensional.of_fintype_basis (b.map_coeffs e this)
· let b := FiniteDimensional.finBasis Fqt F
refine' FiniteDimensional.of_fintype_basis (b.map_coeffs e.symm _)
@@ -85,13 +85,13 @@ protected theorem functionField_iff (Fqt : Type _) [Field Fqt] [Algebra Fq[X] Fq
simp only [e.apply_symm_apply]
#align function_field_iff functionField_iff
-theorem algebraMap_injective [Algebra Fq[X] F] [Algebra (Ratfunc Fq) F]
- [IsScalarTower Fq[X] (Ratfunc Fq) F] : Function.Injective ⇑(algebraMap Fq[X] F) :=
+theorem algebraMap_injective [Algebra Fq[X] F] [Algebra (RatFunc Fq) F]
+ [IsScalarTower Fq[X] (RatFunc Fq) F] : Function.Injective ⇑(algebraMap Fq[X] F) :=
by
- rw [IsScalarTower.algebraMap_eq Fq[X] (Ratfunc Fq) F]
+ rw [IsScalarTower.algebraMap_eq Fq[X] (RatFunc Fq) F]
exact
- Function.Injective.comp (algebraMap (Ratfunc Fq) F).Injective
- (IsFractionRing.injective Fq[X] (Ratfunc Fq))
+ Function.Injective.comp (algebraMap (RatFunc Fq) F).Injective
+ (IsFractionRing.injective Fq[X] (RatFunc Fq))
#align algebra_map_injective algebraMap_injective
namespace FunctionField
@@ -116,16 +116,16 @@ instance : IsDomain (ringOfIntegers Fq F) :=
instance : IsIntegralClosure (ringOfIntegers Fq F) Fq[X] F :=
integralClosure.isIntegralClosure _ _
-variable [Algebra (Ratfunc Fq) F] [IsScalarTower Fq[X] (Ratfunc Fq) F]
+variable [Algebra (RatFunc Fq) F] [IsScalarTower Fq[X] (RatFunc Fq) F]
theorem algebraMap_injective : Function.Injective ⇑(algebraMap Fq[X] (ringOfIntegers Fq F)) :=
by
have hinj : Function.Injective ⇑(algebraMap Fq[X] F) :=
by
- rw [IsScalarTower.algebraMap_eq Fq[X] (Ratfunc Fq) F]
+ rw [IsScalarTower.algebraMap_eq Fq[X] (RatFunc Fq) F]
exact
- Function.Injective.comp (algebraMap (Ratfunc Fq) F).Injective
- (IsFractionRing.injective Fq[X] (Ratfunc Fq))
+ Function.Injective.comp (algebraMap (RatFunc Fq) F).Injective
+ (IsFractionRing.injective Fq[X] (RatFunc Fq))
rw [injective_iff_map_eq_zero (algebraMap Fq[X] ↥(ring_of_integers Fq F))]
intro p hp
rw [← Subtype.coe_inj, Subalgebra.coe_zero] at hp
@@ -143,16 +143,16 @@ theorem not_isField : ¬IsField (ringOfIntegers Fq F) := by
variable [FunctionField Fq F]
instance : IsFractionRing (ringOfIntegers Fq F) F :=
- integralClosure.isFractionRing_of_finite_extension (Ratfunc Fq) F
+ integralClosure.isFractionRing_of_finite_extension (RatFunc Fq) F
instance : IsIntegrallyClosed (ringOfIntegers Fq F) :=
- integralClosure.isIntegrallyClosedOfFiniteExtension (Ratfunc Fq)
+ integralClosure.isIntegrallyClosedOfFiniteExtension (RatFunc Fq)
-instance [IsSeparable (Ratfunc Fq) F] : IsNoetherian Fq[X] (ringOfIntegers Fq F) :=
- IsIntegralClosure.isNoetherian _ (Ratfunc Fq) F _
+instance [IsSeparable (RatFunc Fq) F] : IsNoetherian Fq[X] (ringOfIntegers Fq F) :=
+ IsIntegralClosure.isNoetherian _ (RatFunc Fq) F _
-instance [IsSeparable (Ratfunc Fq) F] : IsDedekindDomain (ringOfIntegers Fq F) :=
- IsIntegralClosure.isDedekindDomain Fq[X] (Ratfunc Fq) F _
+instance [IsSeparable (RatFunc Fq) F] : IsDedekindDomain (ringOfIntegers Fq F) :=
+ IsIntegralClosure.isDedekindDomain Fq[X] (RatFunc Fq) F _
end RingOfIntegers
@@ -161,12 +161,12 @@ end RingOfIntegers
section InftyValuation
-variable [DecidableEq (Ratfunc Fq)]
+variable [DecidableEq (RatFunc Fq)]
/-- The valuation at infinity is the nonarchimedean valuation on `Fq(t)` with uniformizer `1/t`.
Explicitly, if `f/g ∈ Fq(t)` is a nonzero quotient of polynomials, its valuation at infinity is
`multiplicative.of_add(degree(f) - degree(g))`. -/
-def inftyValuationDef (r : Ratfunc Fq) : ℤₘ₀ :=
+def inftyValuationDef (r : RatFunc Fq) : ℤₘ₀ :=
if r = 0 then 0 else Multiplicative.ofAdd r.intDegree
#align function_field.infty_valuation_def FunctionField.inftyValuationDef
@@ -175,10 +175,10 @@ theorem InftyValuation.map_zero' : inftyValuationDef Fq 0 = 0 :=
#align function_field.infty_valuation.map_zero' FunctionField.InftyValuation.map_zero'
theorem InftyValuation.map_one' : inftyValuationDef Fq 1 = 1 :=
- (if_neg one_ne_zero).trans <| by rw [Ratfunc.intDegree_one, ofAdd_zero, WithZero.coe_one]
+ (if_neg one_ne_zero).trans <| by rw [RatFunc.intDegree_one, ofAdd_zero, WithZero.coe_one]
#align function_field.infty_valuation.map_one' FunctionField.InftyValuation.map_one'
-theorem InftyValuation.map_mul' (x y : Ratfunc Fq) :
+theorem InftyValuation.map_mul' (x y : RatFunc Fq) :
inftyValuationDef Fq (x * y) = inftyValuationDef Fq x * inftyValuationDef Fq y :=
by
rw [infty_valuation_def, infty_valuation_def, infty_valuation_def]
@@ -188,10 +188,10 @@ theorem InftyValuation.map_mul' (x y : Ratfunc Fq) :
· rw [hy, MulZeroClass.mul_zero, if_pos (Eq.refl _), MulZeroClass.mul_zero]
·
rw [if_neg hx, if_neg hy, if_neg (mul_ne_zero hx hy), ← WithZero.coe_mul, WithZero.coe_inj, ←
- ofAdd_add, Ratfunc.intDegree_mul hx hy]
+ ofAdd_add, RatFunc.intDegree_mul hx hy]
#align function_field.infty_valuation.map_mul' FunctionField.InftyValuation.map_mul'
-theorem InftyValuation.map_add_le_max' (x y : Ratfunc Fq) :
+theorem InftyValuation.map_add_le_max' (x y : RatFunc Fq) :
inftyValuationDef Fq (x + y) ≤ max (inftyValuationDef Fq x) (inftyValuationDef Fq y) :=
by
by_cases hx : x = 0
@@ -211,17 +211,17 @@ theorem InftyValuation.map_add_le_max' (x y : Ratfunc Fq) :
if_neg hxy]
rw [le_max_iff, WithZero.coe_le_coe, Multiplicative.ofAdd_le, WithZero.coe_le_coe,
Multiplicative.ofAdd_le, ← le_max_iff]
- exact Ratfunc.intDegree_add_le hy hxy
+ exact RatFunc.intDegree_add_le hy hxy
#align function_field.infty_valuation.map_add_le_max' FunctionField.InftyValuation.map_add_le_max'
@[simp]
-theorem infty_valuation_of_nonzero {x : Ratfunc Fq} (hx : x ≠ 0) :
+theorem infty_valuation_of_nonzero {x : RatFunc Fq} (hx : x ≠ 0) :
inftyValuationDef Fq x = Multiplicative.ofAdd x.intDegree := by
rw [infty_valuation_def, if_neg hx]
#align function_field.infty_valuation_of_nonzero FunctionField.infty_valuation_of_nonzero
/-- The valuation at infinity on `Fq(t)`. -/
-def inftyValuation : Valuation (Ratfunc Fq) ℤₘ₀
+def inftyValuation : Valuation (RatFunc Fq) ℤₘ₀
where
toFun := inftyValuationDef Fq
map_zero' := InftyValuation.map_zero' Fq
@@ -231,48 +231,48 @@ def inftyValuation : Valuation (Ratfunc Fq) ℤₘ₀
#align function_field.infty_valuation FunctionField.inftyValuation
@[simp]
-theorem inftyValuation_apply {x : Ratfunc Fq} : inftyValuation Fq x = inftyValuationDef Fq x :=
+theorem inftyValuation_apply {x : RatFunc Fq} : inftyValuation Fq x = inftyValuationDef Fq x :=
rfl
#align function_field.infty_valuation_apply FunctionField.inftyValuation_apply
@[simp]
theorem inftyValuation.c {k : Fq} (hk : k ≠ 0) :
- inftyValuationDef Fq (Ratfunc.c k) = Multiplicative.ofAdd (0 : ℤ) :=
+ inftyValuationDef Fq (RatFunc.C k) = Multiplicative.ofAdd (0 : ℤ) :=
by
- have hCk : Ratfunc.c k ≠ 0 := (map_ne_zero _).mpr hk
- rw [infty_valuation_def, if_neg hCk, Ratfunc.intDegree_c]
+ have hCk : RatFunc.C k ≠ 0 := (map_ne_zero _).mpr hk
+ rw [infty_valuation_def, if_neg hCk, RatFunc.intDegree_C]
#align function_field.infty_valuation.C FunctionField.inftyValuation.c
@[simp]
-theorem inftyValuation.x : inftyValuationDef Fq Ratfunc.x = Multiplicative.ofAdd (1 : ℤ) := by
- rw [infty_valuation_def, if_neg Ratfunc.x_ne_zero, Ratfunc.intDegree_x]
+theorem inftyValuation.x : inftyValuationDef Fq RatFunc.X = Multiplicative.ofAdd (1 : ℤ) := by
+ rw [infty_valuation_def, if_neg RatFunc.X_ne_zero, RatFunc.intDegree_X]
#align function_field.infty_valuation.X FunctionField.inftyValuation.x
@[simp]
theorem inftyValuation.polynomial {p : Fq[X]} (hp : p ≠ 0) :
- inftyValuationDef Fq (algebraMap Fq[X] (Ratfunc Fq) p) =
+ inftyValuationDef Fq (algebraMap Fq[X] (RatFunc Fq) p) =
Multiplicative.ofAdd (p.natDegree : ℤ) :=
by
- have hp' : algebraMap Fq[X] (Ratfunc Fq) p ≠ 0 :=
+ have hp' : algebraMap Fq[X] (RatFunc Fq) p ≠ 0 :=
by
- rw [Ne.def, Ratfunc.algebraMap_eq_zero_iff]
+ rw [Ne.def, RatFunc.algebraMap_eq_zero_iff]
exact hp
- rw [infty_valuation_def, if_neg hp', Ratfunc.intDegree_polynomial]
+ rw [infty_valuation_def, if_neg hp', RatFunc.intDegree_polynomial]
#align function_field.infty_valuation.polynomial FunctionField.inftyValuation.polynomial
/-- The valued field `Fq(t)` with the valuation at infinity. -/
-def inftyValuedFqt : Valued (Ratfunc Fq) ℤₘ₀ :=
+def inftyValuedFqt : Valued (RatFunc Fq) ℤₘ₀ :=
Valued.mk' <| inftyValuation Fq
#align function_field.infty_valued_Fqt FunctionField.inftyValuedFqt
-theorem inftyValuedFqt.def {x : Ratfunc Fq} :
- @Valued.v (Ratfunc Fq) _ _ _ (inftyValuedFqt Fq) x = inftyValuationDef Fq x :=
+theorem inftyValuedFqt.def {x : RatFunc Fq} :
+ @Valued.v (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x = inftyValuationDef Fq x :=
rfl
#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def
/-- The completion `Fq((t⁻¹))` of `Fq(t)` with respect to the valuation at infinity. -/
def FqtInfty :=
- @UniformSpace.Completion (Ratfunc Fq) <| (inftyValuedFqt Fq).toUniformSpace
+ @UniformSpace.Completion (RatFunc Fq) <| (inftyValuedFqt Fq).toUniformSpace
#align function_field.Fqt_infty FunctionField.FqtInfty
instance : Field (FqtInfty Fq) :=
@@ -288,7 +288,7 @@ instance valuedFqtInfty : Valued (FqtInfty Fq) ℤₘ₀ :=
#align function_field.valued_Fqt_infty FunctionField.valuedFqtInfty
theorem valuedFqtInfty.def {x : FqtInfty Fq} :
- Valued.v x = @Valued.extension (Ratfunc Fq) _ _ _ (inftyValuedFqt Fq) x :=
+ Valued.v x = @Valued.extension (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x :=
rfl
#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -81,7 +81,7 @@ protected theorem functionField_iff (Fqt : Type _) [Field Fqt] [Algebra Fq[X] Fq
· let b := FiniteDimensional.finBasis Fqt F
refine' FiniteDimensional.of_fintype_basis (b.map_coeffs e.symm _)
intro c x
- convert (this (e.symm c) x).symm
+ convert(this (e.symm c) x).symm
simp only [e.apply_symm_apply]
#align function_field_iff functionField_iff
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -183,9 +183,9 @@ theorem InftyValuation.map_mul' (x y : Ratfunc Fq) :
by
rw [infty_valuation_def, infty_valuation_def, infty_valuation_def]
by_cases hx : x = 0
- · rw [hx, zero_mul, if_pos (Eq.refl _), zero_mul]
+ · rw [hx, MulZeroClass.zero_mul, if_pos (Eq.refl _), MulZeroClass.zero_mul]
· by_cases hy : y = 0
- · rw [hy, mul_zero, if_pos (Eq.refl _), mul_zero]
+ · rw [hy, MulZeroClass.mul_zero, if_pos (Eq.refl _), MulZeroClass.mul_zero]
·
rw [if_neg hx, if_neg hy, if_neg (mul_ne_zero hx hy), ← WithZero.coe_mul, WithZero.coe_inj, ←
ofAdd_add, Ratfunc.intDegree_mul hx hy]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -244,13 +244,11 @@ def inftyValuedFqt : Valued (RatFunc Fq) ℤₘ₀ :=
set_option linter.uppercaseLean3 false in
#align function_field.infty_valued_Fqt FunctionField.inftyValuedFqt
--- Adaptation note: 2024-03-15
--- Renamed to avoid the reserved name `inftyValuedFqt.def`.
-theorem inftyValuedFqt.def' {x : RatFunc Fq} :
+theorem inftyValuedFqt.def {x : RatFunc Fq} :
@Valued.v (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x = inftyValuationDef Fq x :=
rfl
set_option linter.uppercaseLean3 false in
-#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def'
+#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def
/-- The completion `Fq((t⁻¹))` of `Fq(t)` with respect to the valuation at infinity. -/
def FqtInfty :=
@@ -271,13 +269,11 @@ instance valuedFqtInfty : Valued (FqtInfty Fq) ℤₘ₀ :=
set_option linter.uppercaseLean3 false in
#align function_field.valued_Fqt_infty FunctionField.valuedFqtInfty
--- Adaptation note: 2024-03-15
--- Renamed to avoid the reserved name `valuedFqtInfty.def`.
-theorem valuedFqtInfty.def' {x : FqtInfty Fq} :
+theorem valuedFqtInfty.def {x : FqtInfty Fq} :
Valued.v x = @Valued.extension (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x :=
rfl
set_option linter.uppercaseLean3 false in
-#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def'
+#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def
end InftyValuation
@@ -234,7 +234,7 @@ theorem inftyValuation.polynomial {p : Fq[X]} (hp : p ≠ 0) :
inftyValuationDef Fq (algebraMap Fq[X] (RatFunc Fq) p) =
Multiplicative.ofAdd (p.natDegree : ℤ) := by
have hp' : algebraMap Fq[X] (RatFunc Fq) p ≠ 0 := by
- rw [Ne.def, RatFunc.algebraMap_eq_zero_iff]; exact hp
+ rw [Ne, RatFunc.algebraMap_eq_zero_iff]; exact hp
rw [inftyValuationDef, if_neg hp', RatFunc.intDegree_polynomial]
#align function_field.infty_valuation.polynomial FunctionField.inftyValuation.polynomial
@@ -244,11 +244,13 @@ def inftyValuedFqt : Valued (RatFunc Fq) ℤₘ₀ :=
set_option linter.uppercaseLean3 false in
#align function_field.infty_valued_Fqt FunctionField.inftyValuedFqt
-theorem inftyValuedFqt.def {x : RatFunc Fq} :
+-- Adaptation note: 2024-03-15
+-- Renamed to avoid the reserved name `inftyValuedFqt.def`.
+theorem inftyValuedFqt.def' {x : RatFunc Fq} :
@Valued.v (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x = inftyValuationDef Fq x :=
rfl
set_option linter.uppercaseLean3 false in
-#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def
+#align function_field.infty_valued_Fqt.def FunctionField.inftyValuedFqt.def'
/-- The completion `Fq((t⁻¹))` of `Fq(t)` with respect to the valuation at infinity. -/
def FqtInfty :=
@@ -269,11 +271,13 @@ instance valuedFqtInfty : Valued (FqtInfty Fq) ℤₘ₀ :=
set_option linter.uppercaseLean3 false in
#align function_field.valued_Fqt_infty FunctionField.valuedFqtInfty
-theorem valuedFqtInfty.def {x : FqtInfty Fq} :
+-- Adaptation note: 2024-03-15
+-- Renamed to avoid the reserved name `valuedFqtInfty.def`.
+theorem valuedFqtInfty.def' {x : FqtInfty Fq} :
Valued.v x = @Valued.extension (RatFunc Fq) _ _ _ (inftyValuedFqt Fq) x :=
rfl
set_option linter.uppercaseLean3 false in
-#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def
+#align function_field.valued_Fqt_infty.def FunctionField.valuedFqtInfty.def'
end InftyValuation
@@ -154,7 +154,7 @@ variable [DecidableEq (RatFunc Fq)]
Explicitly, if `f/g ∈ Fq(t)` is a nonzero quotient of polynomials, its valuation at infinity is
`Multiplicative.ofAdd(degree(f) - degree(g))`. -/
def inftyValuationDef (r : RatFunc Fq) : ℤₘ₀ :=
- if r = 0 then 0 else Multiplicative.ofAdd r.intDegree
+ if r = 0 then 0 else ↑(Multiplicative.ofAdd r.intDegree)
#align function_field.infty_valuation_def FunctionField.inftyValuationDef
theorem InftyValuation.map_zero' : inftyValuationDef Fq 0 = 0 :=
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -169,9 +169,9 @@ theorem InftyValuation.map_mul' (x y : RatFunc Fq) :
inftyValuationDef Fq (x * y) = inftyValuationDef Fq x * inftyValuationDef Fq y := by
rw [inftyValuationDef, inftyValuationDef, inftyValuationDef]
by_cases hx : x = 0
- · rw [hx, MulZeroClass.zero_mul, if_pos (Eq.refl _), MulZeroClass.zero_mul]
+ · rw [hx, zero_mul, if_pos (Eq.refl _), zero_mul]
· by_cases hy : y = 0
- · rw [hy, MulZeroClass.mul_zero, if_pos (Eq.refl _), MulZeroClass.mul_zero]
+ · rw [hy, mul_zero, if_pos (Eq.refl _), mul_zero]
· rw [if_neg hx, if_neg hy, if_neg (mul_ne_zero hx hy), ← WithZero.coe_mul, WithZero.coe_inj,
← ofAdd_add, RatFunc.intDegree_mul hx hy]
#align function_field.infty_valuation.map_mul' FunctionField.InftyValuation.map_mul'
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -59,7 +59,7 @@ abbrev FunctionField [Algebra (RatFunc Fq) F] : Prop :=
-- Porting note: Removed `protected`
/-- `F` is a function field over `Fq` iff it is a finite extension of `Fq(t)`. -/
-theorem functionField_iff (Fqt : Type _) [Field Fqt] [Algebra Fq[X] Fqt]
+theorem functionField_iff (Fqt : Type*) [Field Fqt] [Algebra Fq[X] Fqt]
[IsFractionRing Fq[X] Fqt] [Algebra (RatFunc Fq) F] [Algebra Fqt F] [Algebra Fq[X] F]
[IsScalarTower Fq[X] Fqt F] [IsScalarTower Fq[X] (RatFunc Fq) F] :
FunctionField Fq F ↔ FiniteDimensional Fqt F := by
@@ -2,11 +2,6 @@
Copyright (c) 2021 Anne Baanen. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen, Ashvni Narayanan
-
-! This file was ported from Lean 3 source module number_theory.function_field
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Order.Group.TypeTags
import Mathlib.FieldTheory.RatFunc
@@ -14,6 +9,8 @@ import Mathlib.RingTheory.DedekindDomain.IntegralClosure
import Mathlib.RingTheory.IntegrallyClosed
import Mathlib.Topology.Algebra.ValuedField
+#align_import number_theory.function_field from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
/-!
# Function fields
@@ -261,7 +261,7 @@ set_option linter.uppercaseLean3 false in
instance : Field (FqtInfty Fq) :=
letI := inftyValuedFqt Fq
- UniformSpace.Completion.instFieldCompletion
+ UniformSpace.Completion.instField
instance : Inhabited (FqtInfty Fq) :=
⟨(0 : FqtInfty Fq)⟩
The unported dependencies are