Mathlib v3 is deprecated. Go to Mathlib v4

Commit 2021-11-16 12:48 e20af159

View on Github →

feat(field_theory): define the field of rational functions ratfunc (#9563) This PR defines ratfunc K as the field of rational functions over a field K, in terms of fraction_ring (polynomial K). I have been careful to use structures and @[irreducible] defs. Not only does that make for a nicer API, it also helps quite a bit with unification since the check can stop at ratfunc and doesn't have to start unfolding along the lines of fraction_field.field → localization.comm_ring → localization.comm_monoid → localization.has_mul and/or polynomial.integral_domain → polynomial.comm_ring → polynomial.ring → polynomial.semiring. Most of the API is automatically derived from the (components of the) is_fraction_ring instance: the map polynomial K → ratpoly K is algebra_map, the isomorphism to fraction_ring (polynomial K) is is_localization.alg_equiv, ... As a first application to verify that the definitions work, I rewrote function_field in terms of ratfunc.

Estimated changes

added def ratfunc.C
added def ratfunc.X
added theorem ratfunc.algebra_map_C
added theorem ratfunc.algebra_map_X
added theorem ratfunc.aux_equiv_eq
added def ratfunc.denom
added theorem ratfunc.denom_C
added theorem ratfunc.denom_X
added theorem ratfunc.denom_add_dvd
added theorem ratfunc.denom_div
added theorem ratfunc.denom_div_dvd
added theorem ratfunc.denom_dvd
added theorem ratfunc.denom_mul_dvd
added theorem ratfunc.denom_ne_zero
added theorem ratfunc.denom_one
added theorem ratfunc.denom_zero
added def ratfunc.eval
added theorem ratfunc.eval_C
added theorem ratfunc.eval_X
added theorem ratfunc.eval_add
added theorem ratfunc.eval_mul
added theorem ratfunc.eval_one
added theorem ratfunc.eval_zero
added theorem ratfunc.lift_on'_div
added theorem ratfunc.lift_on'_mk
added theorem ratfunc.lift_on_div
added theorem ratfunc.lift_on_mk
added theorem ratfunc.mk_coe_def
added theorem ratfunc.mk_def_of_mem
added theorem ratfunc.mk_def_of_ne
added theorem ratfunc.mk_eq_div'
added theorem ratfunc.mk_eq_div
added theorem ratfunc.mk_eq_mk
added theorem ratfunc.mk_one'
added theorem ratfunc.mk_one
added theorem ratfunc.mk_smul
added theorem ratfunc.mk_zero
added theorem ratfunc.monic_denom
added theorem ratfunc.mul_inv_cancel
added def ratfunc.num
added theorem ratfunc.num_C
added theorem ratfunc.num_X
added theorem ratfunc.num_denom_add
added theorem ratfunc.num_denom_div
added theorem ratfunc.num_denom_mul
added theorem ratfunc.num_div
added theorem ratfunc.num_div_denom
added theorem ratfunc.num_div_dvd
added theorem ratfunc.num_dvd
added theorem ratfunc.num_mul_dvd
added theorem ratfunc.num_ne_zero
added theorem ratfunc.num_one
added theorem ratfunc.num_zero
added structure ratfunc