Mathlib v3 is deprecated. Go to Mathlib v4

Commit 2018-11-05 10:47 a12d5a19

View on Github →

feat(linear_algebra,ring_theory): refactoring modules (#456) Co-authored with Kenny Lau. See also https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/module.20refactoring for discussion. Major changes made:

  • semimodule α β and module α β and vector_space α β now take one more argument, that β is an add_comm_group, i.e. before making an instance of a module, you need to prove that it's an abelian group first.
  • vector space is no longer over a field, but a discrete field.
  • The idiom for making an instance module α β (after proving that β is an abelian group) is module.of_core { smul := sorry, smul_add := sorry, add_smul := sorry, mul_smul := sorry, one_smul := sorry }.
  • is_linear_map and linear_map are now both structures, and they are independent, meaning that linear_map is no longer defined as subtype is_linear_map. The idiom for making linear_map from is_linear_map is is_linear_map.mk' (f : M -> N) (sorry : is_linear_map f), and the idiom for making is_linear_map from linear_map is f.is_linear (i.e. linear_map.is_linear f).
  • is_linear_map.add etc no longer exist. instead, you can now add two linear maps together, etc.
  • the classis_submodule is gone, replaced by the structure submodule which contains a carrier, i.e. if N : submodule R M then N.carrier is a type. And there is an instance module R N in the same situation.
  • similarly, the class is_ideal is gone, replaced by the structure ideal, which also contains a carrier.
  • endomorphism ring and general linear group are defined.
  • submodules form a complete lattice. the trivial ideal is now idiomatically the bottom element, and the universal ideal the top element.
  • linear_algebra/quotient_module.lean is deleted, and it's now submodule.quotient (so if N : submodule R M then submodule R N.quotient) Similarly, quotient_ring.quotient is replaced by ideal.quotient. The canonical map from N to N.quotient is submodule.quotient.mk, and the canonical map from the ideal I to I.quotient is ideal.quotient.mk I.
  • linear_equiv is now based on a linear map and an equiv, and the difference being that now you need to prove that the inverse is also linear, and there is currently no interface to get around that.
  • Everything you want to know about linear independence and basis is now in the newly created file linear_algebra/basis.lean.
  • Everything you want to know about linear combinations is now in the newly created file linear_algebra/lc.lean.
  • linear_algebra/linear_map_module.lean and linear_algebra/prod_module.lean and linear_algebra/quotient_module.lean and linear_algebra/submodule.lean and linear_algebra/subtype_module.lean are deleted (with their contents placed elsewhere). squashed commits:
  • feat(linear_algebra/basic): product modules, cat/lat structure
  • feat(linear_algebra/basic): refactoring quotient_module
  • feat(linear_algebra/basic): merge in submodule.lean
  • feat(linear_algebra/basic): merge in linear_map_module.lean
  • refactor(linear_algebra/dimension): update for new modules
  • feat(ring_theory/ideals): convert ideals
  • refactor tensor product
  • simplify local ring proof for Zp
  • refactor(ring_theory/noetherian)
  • refactor(ring_theory/localization)
  • refactor(linear_algebra/tensor_product)
  • feat(data/polynomial): lcoeff

Estimated changes

deleted theorem add_smul'
modified theorem add_smul
added theorem ideal.add_mem_iff_left
added theorem ideal.mul_mem_left
added theorem ideal.mul_mem_right
added theorem ideal.neg_mem_iff
added def ideal
deleted theorem is_linear_map.comp
deleted theorem is_linear_map.id
deleted theorem is_linear_map.inverse
deleted theorem is_linear_map.map_add
deleted theorem is_linear_map.map_neg
deleted theorem is_linear_map.map_sub
deleted theorem is_linear_map.map_sum
deleted theorem is_linear_map.map_zero
deleted theorem is_linear_map.neg
deleted theorem is_linear_map.sub
deleted theorem is_linear_map.sum
deleted theorem is_linear_map.zero
deleted structure is_linear_map
deleted theorem is_submodule.add
deleted theorem is_submodule.neg
deleted theorem is_submodule.smul_ne_0
deleted theorem is_submodule.sub
deleted theorem is_submodule.sum
deleted theorem is_submodule.zero
added def linear_map.comp
added theorem linear_map.comp_apply
added theorem linear_map.ext
added theorem linear_map.ext_iff
added def linear_map.id
added theorem linear_map.id_apply
added theorem linear_map.is_linear
added theorem linear_map.map_add
added theorem linear_map.map_neg
added theorem linear_map.map_smul
added theorem linear_map.map_sub
added theorem linear_map.map_sum
added theorem linear_map.map_zero
added structure linear_map
added structure module.core
added def module.of_core
deleted theorem mul_smul'
modified theorem mul_smul
deleted theorem one_smul'
modified theorem one_smul
deleted theorem smul_add'
modified theorem smul_add
deleted theorem smul_eq_mul'
modified theorem smul_eq_mul
deleted theorem smul_smul'
modified theorem smul_smul
deleted theorem smul_zero'
modified theorem smul_zero
added theorem submodule.add_mem
added theorem submodule.coe_add
added theorem submodule.coe_neg
added theorem submodule.coe_smul
added theorem submodule.coe_sub
added theorem submodule.coe_zero
added theorem submodule.ext'
added theorem submodule.ext
added theorem submodule.mem_coe
added theorem submodule.neg_mem
added theorem submodule.neg_mem_iff
added theorem submodule.smul_mem
added theorem submodule.smul_mem_iff
added theorem submodule.sub_mem
added theorem submodule.sum_mem
added theorem submodule.zero_mem
added structure submodule
modified def subspace
deleted theorem zero_smul'
modified theorem zero_smul
added theorem prod.inv_mk
added theorem prod.mk_mul_mk
added theorem prod.one_eq_mk
added theorem prod.smul_fst
added theorem prod.smul_mk
added theorem prod.smul_snd
modified theorem padic.rat_dense'
modified theorem padic.rat_dense
modified def padic
modified def padic_norm_e
added theorem classical.some_spec3
deleted theorem constr_add
deleted theorem constr_basis
deleted theorem constr_congr
deleted theorem constr_eq
deleted theorem constr_im_eq_span
deleted theorem constr_mem_span
deleted theorem constr_neg
deleted theorem constr_smul
deleted theorem constr_sub
deleted theorem constr_zero
deleted def equiv_of_is_basis
deleted theorem exists_is_basis
deleted theorem exists_linear_independent
deleted theorem exists_subset_is_basis
modified theorem finset.smul_sum
modified theorem finsupp.smul_sum
deleted def is_basis.constr
deleted theorem is_basis.eq_linear_map
deleted theorem is_basis.linear_equiv
deleted theorem is_basis.map_constr
deleted theorem is_basis.map_repr
deleted def is_basis
deleted theorem is_linear_map.finsupp_sum
deleted theorem is_submodule_range_smul
deleted theorem lc.is_linear_map_sum
deleted def lc
deleted theorem linear_eq_on
added theorem linear_equiv.coe_apply
deleted theorem linear_equiv.linear_inv
modified def linear_equiv.refl
modified def linear_equiv.symm
modified structure linear_equiv
deleted theorem linear_independent.image
deleted theorem linear_independent.insert
deleted theorem linear_independent.mono
deleted theorem linear_independent.unique
deleted def linear_independent
deleted theorem linear_independent_empty
deleted theorem linear_independent_union
added theorem linear_map.add_apply
added theorem linear_map.comp_id
added theorem linear_map.copair_inl
added theorem linear_map.copair_inr
added theorem linear_map.finsupp_sum
added def linear_map.fst
added theorem linear_map.fst_apply
added theorem linear_map.fst_pair
added theorem linear_map.id_comp
added def linear_map.inl
added theorem linear_map.inl_apply
added theorem linear_map.inl_eq_pair
added def linear_map.inr
added theorem linear_map.inr_apply
added theorem linear_map.inr_eq_pair
added def linear_map.ker
added theorem linear_map.ker_comp
added theorem linear_map.ker_eq_bot
added theorem linear_map.ker_eq_top
added theorem linear_map.ker_id
added theorem linear_map.ker_zero
added theorem linear_map.mem_ker
added theorem linear_map.mem_range
added theorem linear_map.mul_app
added theorem linear_map.neg_apply
added theorem linear_map.one_app
added def linear_map.pair
added theorem linear_map.pair_apply
added def linear_map.range
added theorem linear_map.range_coe
added theorem linear_map.range_comp
added theorem linear_map.range_id
added theorem linear_map.smul_apply
added def linear_map.snd
added theorem linear_map.snd_apply
added theorem linear_map.snd_pair
added theorem linear_map.sub_apply
added theorem linear_map.sum_apply
added theorem linear_map.zero_apply
deleted theorem mem_span_insert
deleted theorem mem_span_insert_exchange
deleted def module_equiv_lc
deleted theorem repr_add
deleted theorem repr_eq
deleted theorem repr_eq_repr_of_subset
deleted theorem repr_eq_single
deleted theorem repr_eq_zero
deleted theorem repr_finsupp_sum
deleted theorem repr_neg
deleted theorem repr_not_span
deleted theorem repr_smul
deleted theorem repr_spec
deleted theorem repr_sub
deleted theorem repr_sum
deleted theorem repr_sum_eq
deleted theorem repr_support
deleted theorem repr_zero
deleted def span
deleted theorem span_empty
deleted theorem span_eq
deleted theorem span_eq_of_is_submodule
deleted theorem span_image_of_linear_map
deleted theorem span_insert
deleted theorem span_insert_eq_span
deleted theorem span_minimal
deleted theorem span_mono
deleted theorem span_singleton
deleted theorem span_span
deleted theorem span_union
added theorem submodule.Inf_coe
added theorem submodule.bot_coe
added def submodule.comap
added theorem submodule.comap_bot
added theorem submodule.comap_coe
added theorem submodule.comap_comp
added theorem submodule.comap_fst
added theorem submodule.comap_id
added theorem submodule.comap_liftq
added theorem submodule.comap_mono
added theorem submodule.comap_snd
added theorem submodule.comap_top
added theorem submodule.disjoint_def
added theorem submodule.eq_top_iff'
added theorem submodule.inf_coe
added theorem submodule.infi_coe
added theorem submodule.ker_inl
added theorem submodule.ker_inr
added theorem submodule.ker_liftq
added theorem submodule.ker_mkq
added theorem submodule.ker_subtype
added theorem submodule.le_comap_map
added theorem submodule.le_comap_mkq
added theorem submodule.le_def'
added theorem submodule.le_def
added def submodule.liftq
added theorem submodule.liftq_apply
added theorem submodule.liftq_mkq
added def submodule.map
added theorem submodule.map_bot
added theorem submodule.map_coe
added theorem submodule.map_comap_le
added theorem submodule.map_comp
added theorem submodule.map_id
added theorem submodule.map_inl
added theorem submodule.map_inr
added theorem submodule.map_mono
added theorem submodule.map_top
added def submodule.mapq
added theorem submodule.mapq_apply
added theorem submodule.mapq_mkq
added theorem submodule.mem_bot
added theorem submodule.mem_comap
added theorem submodule.mem_inf
added theorem submodule.mem_infi
added theorem submodule.mem_map
added theorem submodule.mem_prod
added theorem submodule.mem_span
added theorem submodule.mem_sup
added theorem submodule.mem_top
added def submodule.mkq
added theorem submodule.mkq_apply
added theorem submodule.mkq_map_self
added def submodule.of_le
added theorem submodule.of_le_apply
added def submodule.prod
added theorem submodule.prod_bot
added theorem submodule.prod_coe
added theorem submodule.prod_map_fst
added theorem submodule.prod_map_snd
added theorem submodule.prod_mono
added theorem submodule.prod_top
added theorem submodule.range_fst
added theorem submodule.range_mkq
added theorem submodule.range_snd
added def submodule.span
added theorem submodule.span_Union
added theorem submodule.span_empty
added theorem submodule.span_eq
added theorem submodule.span_eq_bot
added theorem submodule.span_image
added theorem submodule.span_le
added theorem submodule.span_mono
added theorem submodule.span_prod_le
added theorem submodule.span_span
added theorem submodule.span_union
added theorem submodule.subset_span
added theorem submodule.top_coe
deleted theorem subset_span
added theorem constr_add
added theorem constr_basis
added theorem constr_congr
added theorem constr_eq
added theorem constr_neg
added theorem constr_range
added theorem constr_self
added theorem constr_smul
added theorem constr_sub
added theorem constr_zero
added theorem exists_is_basis
added theorem exists_subset_is_basis
added def is_basis.constr
added theorem is_basis.constr_apply
added theorem is_basis.ext
added theorem is_basis.mem_span
added def is_basis.repr
added theorem is_basis.repr_ker
added theorem is_basis.repr_range
added theorem is_basis.total_repr
added def is_basis
added theorem is_basis_inl_union_inr
added theorem linear_equiv.is_basis
added theorem linear_independent_iff
added def module_equiv_lc
added theorem dim_prod
added theorem dim_quotient
added theorem dim_range_add_dim_ker
added theorem is_basis.le_span
added theorem is_basis.mk_eq_dim
added theorem linear_equiv.dim_eq
added theorem mk_eq_mk_of_basis
modified def vector_space.dim
deleted theorem vector_space.dim_prod
deleted theorem vector_space.dim_quotient
deleted theorem vector_space.mk_basis
added def lc.apply
added theorem lc.apply_apply
added theorem lc.lsum_apply
added theorem lc.map_apply
added theorem lc.map_comp
added theorem lc.map_disjoint_ker
added theorem lc.map_id
added theorem lc.map_supported
added theorem lc.map_total
added theorem lc.mem_supported'
added theorem lc.mem_supported
added theorem lc.range_restrict_dom
added def lc.restrict_dom
added theorem lc.restrict_dom_apply
added def lc.supported
added theorem lc.supported_Inter
added theorem lc.supported_Union
added theorem lc.supported_comap_map
added theorem lc.supported_empty
added theorem lc.supported_mono
added theorem lc.supported_union
added theorem lc.supported_univ
added theorem lc.total_apply
added def lc.total_on
added theorem lc.total_on_range
added theorem lc.total_range
added theorem lc.total_single
added def lc
added theorem linear_eq_on
added theorem mem_span_iff_lc
added theorem span_eq_map_lc
deleted theorem linear_map.add_app
deleted theorem linear_map.ext
deleted def linear_map.im
deleted def linear_map.ker
deleted theorem linear_map.map_add
deleted theorem linear_map.map_neg
deleted theorem linear_map.map_smul
deleted theorem linear_map.map_sub
deleted theorem linear_map.map_zero
deleted theorem linear_map.mem_im
deleted theorem linear_map.mem_ker
deleted theorem linear_map.neg_app
deleted theorem linear_map.smul_app
deleted theorem linear_map.sub_ker
deleted theorem linear_map.zero_app
deleted def linear_map
deleted theorem module.mul_app
deleted theorem module.one_app
deleted theorem submodule.bot_set
deleted theorem submodule.coe_comap
deleted theorem submodule.coe_map
deleted theorem submodule.coe_prod
deleted def submodule.comap
deleted theorem submodule.comap_comp
deleted theorem submodule.comap_id
deleted theorem submodule.comap_map_eq
deleted theorem submodule.ext
deleted theorem submodule.injective_comap
deleted theorem submodule.injective_map
deleted def submodule.map
deleted theorem submodule.map_comp
deleted theorem submodule.map_id
deleted theorem submodule.mem_coe
deleted def submodule.prod
deleted theorem submodule.sInter_set
deleted def submodule.span
deleted theorem submodule.span_empty
deleted theorem submodule.span_subset_iff
deleted theorem submodule.span_union
deleted theorem submodule.top_set
deleted structure {u
deleted theorem is_bilinear_map.comm
deleted theorem is_bilinear_map.comp
deleted theorem is_bilinear_map.neg_left
deleted theorem is_bilinear_map.neg_right
deleted theorem is_bilinear_map.zero_left
deleted structure is_bilinear_map
added theorem linear_map.ext₂
added def linear_map.flip
added theorem linear_map.flip_apply
added theorem linear_map.flip_inj
added def linear_map.lcomp
added theorem linear_map.lcomp_apply
added def linear_map.lflip
added theorem linear_map.lflip_apply
added def linear_map.lsmul
added theorem linear_map.lsmul_apply
added theorem linear_map.map_add₂
added theorem linear_map.map_neg₂
added theorem linear_map.map_smul₂
added theorem linear_map.map_zero₂
added def linear_map.mk₂
added theorem linear_map.mk₂_apply
modified theorem tensor_product.add_tmul
deleted theorem tensor_product.bilinear
added theorem tensor_product.ext
added theorem tensor_product.lift_mk
deleted def tensor_product.smul
modified theorem tensor_product.smul_tmul
deleted theorem tensor_product.tmul.smul
modified theorem tensor_product.tmul_add
added theorem coe_subset_nonunits
added def ideal.comap
added theorem ideal.comap_ne_top
added theorem ideal.eq_top_iff_one
added def ideal.is_maximal
added theorem ideal.is_maximal_iff
added def ideal.is_prime
added theorem ideal.mem_comap
added theorem ideal.mem_span_insert'
added theorem ideal.mem_span_insert
added theorem ideal.ne_top_iff_one
added theorem ideal.quotient.mk_add
added theorem ideal.quotient.mk_mul
added theorem ideal.quotient.mk_neg
added theorem ideal.quotient.mk_one
added theorem ideal.quotient.mk_pow
added theorem ideal.quotient.mk_sub
added theorem ideal.quotient.mk_zero
added def ideal.quotient
added def ideal.span
added theorem ideal.span_eq
added theorem ideal.span_eq_bot
added theorem ideal.span_le
added theorem ideal.span_mono
added theorem ideal.subset_span
deleted theorem is_ideal.mem_trivial
deleted theorem is_ideal.mul_left
deleted theorem is_ideal.mul_right
deleted theorem is_ideal.neg_iff
deleted def is_ideal.trivial
added def is_local_ring
deleted theorem is_maximal_ideal.mk
added theorem mem_nonunits_ideal
added theorem mem_nonunits_iff
deleted theorem mem_or_mem_of_mul_eq_zero
added theorem mul_mem_nonunits_left
added theorem mul_mem_nonunits_right
modified def nonunits
added def nonunits_ideal
added theorem one_not_mem_nonunits
deleted theorem quotient_ring.coe_add
deleted theorem quotient_ring.coe_mul
deleted theorem quotient_ring.coe_neg
deleted theorem quotient_ring.coe_one
deleted theorem quotient_ring.coe_pow
deleted theorem quotient_ring.coe_sub
deleted theorem quotient_ring.coe_zero
deleted theorem quotient_ring.exists_inv
deleted def quotient_ring.mk
added theorem zero_mem_nonunits